mirror of
https://github.com/hanzokms/terraform-provider.git
synced 2026-10-30 20:29:45 +00:00
119 lines
2.9 KiB
Go
119 lines
2.9 KiB
Go
package kmsclient
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/hanzokms/terraform-provider/internal/errors"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
operationCreateGroup = "CallCreateGroup"
|
|
operationUpdateGroup = "CallUpdateGroup"
|
|
operationDeleteGroup = "CallDeleteGroup"
|
|
operationGetGroupById = "CallGetGroupById"
|
|
operationGetGroups = "CallGetGroups"
|
|
)
|
|
|
|
func (client Client) CreateGroup(request CreateGroupRequest) (Group, error) {
|
|
var groupResponse Group
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&groupResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Post("api/v1/groups")
|
|
|
|
if err != nil {
|
|
return Group{}, errors.NewGenericRequestError(operationCreateGroup, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return Group{}, errors.NewAPIErrorWithResponse(operationCreateGroup, response, nil)
|
|
}
|
|
|
|
return groupResponse, nil
|
|
}
|
|
|
|
func (client Client) UpdateGroup(request UpdateGroupRequest) (Group, error) {
|
|
var groupResponse Group
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&groupResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Patch(fmt.Sprintf("api/v1/groups/%s", request.ID))
|
|
|
|
if err != nil {
|
|
return Group{}, errors.NewGenericRequestError(operationUpdateGroup, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return Group{}, errors.NewAPIErrorWithResponse(operationUpdateGroup, response, nil)
|
|
}
|
|
|
|
return groupResponse, nil
|
|
}
|
|
|
|
func (client Client) DeleteGroup(request DeleteGroupRequest) (Group, error) {
|
|
var groupResponse Group
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&groupResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
Delete(fmt.Sprintf("api/v1/groups/%s", request.ID))
|
|
|
|
if err != nil {
|
|
return Group{}, errors.NewGenericRequestError(operationDeleteGroup, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return Group{}, errors.NewAPIErrorWithResponse(operationDeleteGroup, response, nil)
|
|
}
|
|
|
|
return groupResponse, nil
|
|
}
|
|
|
|
func (client Client) GetGroupById(request GetGroupByIdRequest) (Group, error) {
|
|
var groupResponse Group
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&groupResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
Get(fmt.Sprintf("api/v1/groups/%s", request.ID))
|
|
|
|
if response.StatusCode() == http.StatusNotFound {
|
|
return Group{}, ErrNotFound
|
|
}
|
|
|
|
if err != nil {
|
|
return Group{}, errors.NewGenericRequestError(operationGetGroupById, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return Group{}, errors.NewAPIErrorWithResponse(operationGetGroupById, response, nil)
|
|
}
|
|
|
|
return groupResponse, nil
|
|
}
|
|
|
|
func (client Client) GetGroups() (GetGroupsResponse, error) {
|
|
var body GetGroupsResponse
|
|
|
|
httpRequest := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT)
|
|
|
|
response, err := httpRequest.Get("api/v1/groups")
|
|
|
|
if err != nil {
|
|
return GetGroupsResponse{}, errors.NewGenericRequestError(operationGetGroups, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return GetGroupsResponse{}, errors.NewAPIErrorWithResponse(operationGetGroups, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|