ente/cli/internal/api/admin.go
2024-03-14 16:18:08 +05:30

120 lines
2.5 KiB
Go

package api
import (
"context"
"fmt"
"github.com/ente-io/cli/internal/api/models"
"time"
)
func (c *Client) GetUserIdFromEmail(ctx context.Context, email string) (*models.UserDetails, error) {
var res models.UserDetails
r, err := c.restClient.R().
SetContext(ctx).
SetResult(&res).
SetQueryParam("email", email).
Get("/admin/user/")
if err != nil {
return nil, err
}
if r.IsError() {
return nil, &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return &res, nil
}
func (c *Client) ListUsers(ctx context.Context) ([]models.User, error) {
var res struct {
Users []models.User `json:"users"`
}
r, err := c.restClient.R().
SetContext(ctx).
SetQueryParam("sinceTime", "0").
SetResult(&res).
Get("/admin/users/")
if err != nil {
return nil, err
}
if r.IsError() {
return nil, &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return res.Users, nil
}
func (c *Client) DeleteUser(ctx context.Context, email string) error {
r, err := c.restClient.R().
SetContext(ctx).
SetQueryParam("email", email).
Delete("/admin/user/delete")
if err != nil {
return err
}
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return nil
}
func (c *Client) Disable2Fa(ctx context.Context, userID int64) error {
var res interface{}
payload := map[string]interface{}{
"userID": userID,
}
r, err := c.restClient.R().
SetContext(ctx).
SetResult(&res).
SetBody(payload).
Post("/admin/user/disable-2fa")
if err != nil {
return err
}
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return nil
}
func (c *Client) UpdateFreePlanSub(ctx context.Context, userDetails *models.UserDetails, storageInBytes int64, expiryTimeInMicro int64) error {
var res interface{}
if userDetails.Subscription.ProductID != "free" {
return fmt.Errorf("user is not on free plan")
}
payload := map[string]interface{}{
"userID": userDetails.User.ID,
"expiryTime": expiryTimeInMicro,
"transactionID": fmt.Sprintf("cli-on-%d", time.Now().Unix()),
"productID": "free",
"paymentProvider": "",
"storage": storageInBytes,
}
r, err := c.restClient.R().
SetContext(ctx).
SetResult(&res).
SetBody(payload).
Put("/admin/user/subscription")
if err != nil {
return err
}
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return nil
}