Skip to content

Commit

Permalink
refactor: use map for query params
Browse files Browse the repository at this point in the history
  • Loading branch information
tenstad committed Jan 8, 2025
1 parent 9258f8c commit 2e83add
Showing 1 changed file with 28 additions and 37 deletions.
65 changes: 28 additions & 37 deletions internal/sdk/cloudian/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,22 +142,21 @@ func (client Client) ListUsers(ctx context.Context, groupId string, offsetUserId
var retVal []User

limit := 100
params := map[string]string{
"groupId": groupId,
"userType": "all",
"userStatus": "all",
"limit": strconv.Itoa(limit),
}
if offsetUserId != nil {
params["offset"] = *offsetUserId
}

req, err := client.newRequest(ctx, "/user/list", http.MethodGet, nil)
req, err := client.newRequest(ctx, http.MethodGet, "/user/list", params, nil)
if err != nil {
return nil, fmt.Errorf("GET error creating list request: %w", err)
}

q := req.URL.Query()
q.Set("groupId", groupId)
q.Set("userType", "all")
q.Set("userStatus", "all")
q.Set("limit", strconv.Itoa(limit))
if offsetUserId != nil {
q.Set("offset", *offsetUserId)
}
req.URL.RawQuery = q.Encode()

resp, err := client.httpClient.Do(req)
if err != nil {
return nil, fmt.Errorf("GET list users failed: %w", err)
Expand Down Expand Up @@ -197,16 +196,12 @@ func (client Client) ListUsers(ctx context.Context, groupId string, offsetUserId

// Delete a single user. Errors if the user does not exist.
func (client Client) DeleteUser(ctx context.Context, user User) error {
req, err := client.newRequest(ctx, "/user", http.MethodDelete, nil)
req, err := client.newRequest(ctx, http.MethodDelete, "/user",
map[string]string{"groupId": user.GroupID, "userId": user.UserID}, nil)
if err != nil {
return fmt.Errorf("DELETE error creating request: %w", err)
}

q := req.URL.Query()
q.Set("groupId", user.GroupID)
q.Set("userId", user.UserID)
req.URL.RawQuery = q.Encode()

resp, err := client.httpClient.Do(req)
if err != nil {
return fmt.Errorf("DELETE to cloudian /user got: %w", err)
Expand All @@ -229,7 +224,7 @@ func (client Client) CreateUser(ctx context.Context, user User) error {
return fmt.Errorf("error marshaling JSON: %w", err)
}

req, err := client.newRequest(ctx, "/user", http.MethodPut, jsonData)
req, err := client.newRequest(ctx, http.MethodPut, "/user", nil, jsonData)
if err != nil {
return fmt.Errorf("error creating request: %w", err)
}
Expand All @@ -244,16 +239,12 @@ func (client Client) CreateUser(ctx context.Context, user User) error {

// GetUserCredentials fetches all the credentials of a user.
func (client Client) GetUserCredentials(ctx context.Context, user User) ([]SecurityInfo, error) {
req, err := client.newRequest(ctx, "/user/credentials/list", http.MethodGet, nil)
req, err := client.newRequest(ctx, http.MethodGet, "/user/credentials/list",
map[string]string{"groupId": user.GroupID, "userId": user.UserID}, nil)
if err != nil {
return nil, fmt.Errorf("error creating credentials request: %w", err)
}

q := req.URL.Query()
q.Set("groupId", user.GroupID)
q.Set("userId", user.UserID)
req.URL.RawQuery = q.Encode()

resp, err := client.httpClient.Do(req)
if err != nil {
return nil, fmt.Errorf("error performing credentials request: %w", err)
Expand Down Expand Up @@ -301,15 +292,12 @@ func (client Client) DeleteGroupRecursive(ctx context.Context, groupId string) e

// Deletes a group if it is without members.
func (client Client) DeleteGroup(ctx context.Context, groupId string) error {
req, err := client.newRequest(ctx, "/group", http.MethodDelete, nil)
req, err := client.newRequest(ctx, http.MethodDelete, "/group",
map[string]string{"groupId": groupId}, nil)
if err != nil {
return fmt.Errorf("error creating request: %w", err)
}

q := req.URL.Query()
q.Set("groupId", groupId)
req.URL.RawQuery = q.Encode()

resp, err := client.httpClient.Do(req)
if err != nil {
return fmt.Errorf("DELETE to cloudian /group got: %w", err)
Expand All @@ -325,7 +313,7 @@ func (client Client) CreateGroup(ctx context.Context, group Group) error {
return fmt.Errorf("error marshaling JSON: %w", err)
}

req, err := client.newRequest(ctx, "/group", http.MethodPut, jsonData)
req, err := client.newRequest(ctx, http.MethodPut, "/group", nil, jsonData)
if err != nil {
return fmt.Errorf("error creating request: %w", err)
}
Expand All @@ -346,7 +334,7 @@ func (client Client) UpdateGroup(ctx context.Context, group Group) error {
}

// Create a context with a timeout
req, err := client.newRequest(ctx, "/group", http.MethodPost, jsonData)
req, err := client.newRequest(ctx, http.MethodPost, "/group", nil, jsonData)
if err != nil {
return fmt.Errorf("error creating request: %w", err)
}
Expand All @@ -362,15 +350,12 @@ func (client Client) UpdateGroup(ctx context.Context, group Group) error {
// Get a group. Returns an error even in the case of a group not found.
// This error can then be checked against ErrNotFound: errors.Is(err, ErrNotFound)
func (client Client) GetGroup(ctx context.Context, groupId string) (*Group, error) {
req, err := client.newRequest(ctx, "/group", http.MethodGet, nil)
req, err := client.newRequest(ctx, http.MethodGet, "/group",
map[string]string{"groupId": groupId}, nil)
if err != nil {
return nil, err
}

q := req.URL.Query()
q.Set("groupId", groupId)
req.URL.RawQuery = q.Encode()

resp, err := client.httpClient.Do(req)
if err != nil {
return nil, fmt.Errorf("GET error: %w", err)
Expand Down Expand Up @@ -400,7 +385,7 @@ func (client Client) GetGroup(ctx context.Context, groupId string) (*Group, erro
}
}

func (client Client) newRequest(ctx context.Context, url string, method string, body []byte) (*http.Request, error) {
func (client Client) newRequest(ctx context.Context, method string, url string, query map[string]string, body []byte) (*http.Request, error) {
var buffer io.Reader = nil
if body != nil {
buffer = bytes.NewBuffer(body)
Expand All @@ -413,5 +398,11 @@ func (client Client) newRequest(ctx context.Context, url string, method string,
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", client.authHeader)

q := req.URL.Query()
for k, v := range query {
q.Set(k, v)
}
req.URL.RawQuery = q.Encode()

return req, nil
}

0 comments on commit 2e83add

Please sign in to comment.