From cda7dda3cb1554809f93f43657df8dd83aa5c056 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:06:45 +0530 Subject: [PATCH] [cli] Add API to get authenticator data --- cli/internal/api/authenticator.go | 41 ++++++++++++++++++++++++ cli/internal/api/models/authenticator.go | 16 +++++++++ 2 files changed, 57 insertions(+) create mode 100644 cli/internal/api/authenticator.go create mode 100644 cli/internal/api/models/authenticator.go diff --git a/cli/internal/api/authenticator.go b/cli/internal/api/authenticator.go new file mode 100644 index 0000000000..cc1060031c --- /dev/null +++ b/cli/internal/api/authenticator.go @@ -0,0 +1,41 @@ +package api + +import ( + "context" + "github.com/ente-io/cli/internal/api/models" + "strconv" +) + +func (c *Client) GetAuthKey(ctx context.Context) (*models.AuthKey, error) { + var res models.AuthKey + r, err := c.restClient.R(). + SetContext(ctx). + SetResult(&res). + Get("/authenticator/key") + if r.IsError() { + return nil, &ApiError{ + StatusCode: r.StatusCode(), + Message: r.String(), + } + } + return &res, err +} + +func (c *Client) GetDiff(ctx context.Context, sinceTime int64, limit int64) ([]models.AuthEntity, error) { + var res struct { + Diff []models.AuthEntity `json:"diff"` + } + r, err := c.restClient.R(). + SetContext(ctx). + SetQueryParam("sinceTime", strconv.FormatInt(sinceTime, 10)). + SetQueryParam("limit", strconv.FormatInt(limit, 10)). + SetResult(&res). + Get("/authenticator/entity/diff") + if r.IsError() { + return nil, &ApiError{ + StatusCode: r.StatusCode(), + Message: r.String(), + } + } + return res.Diff, err +} diff --git a/cli/internal/api/models/authenticator.go b/cli/internal/api/models/authenticator.go new file mode 100644 index 0000000000..d2aee3cef0 --- /dev/null +++ b/cli/internal/api/models/authenticator.go @@ -0,0 +1,16 @@ +package models + +type AuthKey struct { + UserID int64 `json:"userID" binding:"required"` + EncryptedKey string `json:"encryptedKey" binding:"required"` + Header string `json:"header" binding:"required"` +} + +type AuthEntity struct { + ID string `json:"id" binding:"required"` + EncryptedKey *string `json:"encryptedKey"` + Header *string `json:"header"` + IsDeleted bool `json:"isDeleted" binding:"required"` + CreatedAt int64 `json:"createdAt" binding:"required"` + UpdatedAt int64 `json:"updatedAt" binding:"required"` +}