mirror of
https://github.com/hanzokms/terraform-provider.git
synced 2026-10-30 20:29:45 +00:00
99 lines
3.2 KiB
Go
99 lines
3.2 KiB
Go
package kmsclient
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/hanzokms/terraform-provider/internal/errors"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
operationCreateProjectGroup = "CallCreateProjectGroup"
|
|
operationGetProjectGroupMembership = "CallGetProjectGroupMembership"
|
|
operationUpdateProjectGroup = "CallUpdateProjectGroup"
|
|
operationDeleteProjectGroup = "CallDeleteProjectGroup"
|
|
)
|
|
|
|
func (client Client) CreateProjectGroup(request CreateProjectGroupRequest) (CreateProjectGroupResponse, error) {
|
|
var responseData CreateProjectGroupResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&responseData).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Post(fmt.Sprintf("api/v2/workspace/%s/groups/%s", request.ProjectId, request.GroupIdOrName))
|
|
|
|
if err != nil {
|
|
return CreateProjectGroupResponse{}, errors.NewGenericRequestError(operationCreateProjectGroup, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return CreateProjectGroupResponse{}, errors.NewAPIErrorWithResponse(operationCreateProjectGroup, response, nil)
|
|
}
|
|
|
|
return responseData, nil
|
|
}
|
|
|
|
func (client Client) GetProjectGroupMembership(request GetProjectGroupMembershipRequest) (GetProjectGroupMembershipResponse, error) {
|
|
var responseData GetProjectGroupMembershipResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&responseData).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Get(fmt.Sprintf("api/v2/workspace/%s/groups/%s", request.ProjectId, request.GroupId))
|
|
|
|
if response.StatusCode() == http.StatusNotFound {
|
|
return GetProjectGroupMembershipResponse{}, ErrNotFound
|
|
}
|
|
|
|
if err != nil {
|
|
return GetProjectGroupMembershipResponse{}, errors.NewGenericRequestError(operationGetProjectGroupMembership, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return GetProjectGroupMembershipResponse{}, errors.NewAPIErrorWithResponse(operationGetProjectGroupMembership, response, nil)
|
|
}
|
|
|
|
return responseData, nil
|
|
}
|
|
|
|
func (client Client) UpdateProjectGroup(request UpdateProjectGroupRequest) (UpdateProjectGroupResponse, error) {
|
|
var responseData UpdateProjectGroupResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&responseData).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Patch(fmt.Sprintf("api/v2/workspace/%s/groups/%s", request.ProjectId, request.GroupId))
|
|
|
|
if err != nil {
|
|
return UpdateProjectGroupResponse{}, errors.NewGenericRequestError(operationUpdateProjectGroup, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return UpdateProjectGroupResponse{}, errors.NewAPIErrorWithResponse(operationUpdateProjectGroup, response, nil)
|
|
}
|
|
|
|
return responseData, nil
|
|
}
|
|
|
|
func (client Client) DeleteProjectGroup(request DeleteProjectGroupRequest) (DeleteProjectGroupResponse, error) {
|
|
var responseData DeleteProjectGroupResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&responseData).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Delete(fmt.Sprintf("/api/v2/workspace/%s/groups/%s", request.ProjectId, request.GroupId))
|
|
|
|
if err != nil {
|
|
return DeleteProjectGroupResponse{}, errors.NewGenericRequestError(operationDeleteProjectGroup, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return DeleteProjectGroupResponse{}, errors.NewAPIErrorWithResponse(operationDeleteProjectGroup, response, nil)
|
|
}
|
|
|
|
return responseData, nil
|
|
}
|