mirror of
https://github.com/hanzokms/terraform-provider.git
synced 2026-10-30 20:29:45 +00:00
150 lines
4.5 KiB
Go
150 lines
4.5 KiB
Go
package kmsclient
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/hanzokms/terraform-provider/internal/errors"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
const (
|
|
operationGetSecretFolderByID = "CallGetSecretFolderByID"
|
|
operationGetSecretFolderList = "CallGetSecretFolderList"
|
|
operationCreateSecretFolder = "CallCreateSecretFolder"
|
|
operationUpdateSecretFolder = "CallUpdateSecretFolder"
|
|
operationDeleteSecretFolder = "CallDeleteSecretFolder"
|
|
operationGetSecretFolderByPath = "CallGetSecretFolderByPath"
|
|
)
|
|
|
|
func (client Client) GetSecretFolderByID(request GetSecretFolderByIDRequest) (GetSecretFolderByIDResponse, error) {
|
|
var body GetSecretFolderByIDResponse
|
|
|
|
httpRequest := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT)
|
|
|
|
response, err := httpRequest.Get("api/v1/folders/" + request.ID)
|
|
|
|
if err != nil {
|
|
return GetSecretFolderByIDResponse{}, errors.NewGenericRequestError(operationGetSecretFolderByID, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
if response.StatusCode() == http.StatusNotFound {
|
|
return GetSecretFolderByIDResponse{}, ErrNotFound
|
|
}
|
|
|
|
return GetSecretFolderByIDResponse{}, errors.NewAPIErrorWithResponse(operationGetSecretFolderByID, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|
|
|
|
func (client Client) GetSecretFolderList(request ListSecretFolderRequest) (ListSecretFolderResponse, error) {
|
|
var body ListSecretFolderResponse
|
|
|
|
httpRequest := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetQueryParam("workspaceId", request.ProjectID).
|
|
SetQueryParam("environment", request.Environment).
|
|
SetQueryParam("path", request.SecretPath)
|
|
|
|
response, err := httpRequest.Get("api/v1/folders")
|
|
|
|
if err != nil {
|
|
return ListSecretFolderResponse{}, errors.NewGenericRequestError(operationGetSecretFolderList, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return ListSecretFolderResponse{}, errors.NewAPIErrorWithResponse(operationGetSecretFolderList, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|
|
|
|
func (client Client) CreateSecretFolder(request CreateSecretFolderRequest) (CreateSecretFolderResponse, error) {
|
|
var body CreateSecretFolderResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Post("api/v1/folders")
|
|
|
|
if err != nil {
|
|
return CreateSecretFolderResponse{}, errors.NewGenericRequestError(operationCreateSecretFolder, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return CreateSecretFolderResponse{}, errors.NewAPIErrorWithResponse(operationCreateSecretFolder, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|
|
|
|
func (client Client) UpdateSecretFolder(request UpdateSecretFolderRequest) (UpdateSecretFolderResponse, error) {
|
|
var body UpdateSecretFolderResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Patch("api/v1/folders/" + request.ID)
|
|
|
|
if err != nil {
|
|
return UpdateSecretFolderResponse{}, errors.NewGenericRequestError(operationUpdateSecretFolder, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return UpdateSecretFolderResponse{}, errors.NewAPIErrorWithResponse(operationUpdateSecretFolder, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|
|
|
|
func (client Client) DeleteSecretFolder(request DeleteSecretFolderRequest) (DeleteSecretFolderResponse, error) {
|
|
var body DeleteSecretFolderResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Delete("api/v2/folders/" + request.ID)
|
|
|
|
if err != nil {
|
|
return DeleteSecretFolderResponse{}, errors.NewGenericRequestError(operationDeleteSecretFolder, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return DeleteSecretFolderResponse{}, errors.NewAPIErrorWithResponse(operationDeleteSecretFolder, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|
|
|
|
func (client Client) GetFolderByPath(request GetSecretFolderByPathRequest) (GetSecretFolderByPathResponse, error) {
|
|
var body GetSecretFolderByPathResponse
|
|
|
|
httpRequest := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&body).
|
|
SetHeader("User-Agent", USER_AGENT)
|
|
response, err := httpRequest.Get(fmt.Sprintf("api/v1/folders/%s/%s/%s", request.ProjectID, request.Environment, url.PathEscape(request.SecretPath)))
|
|
|
|
if err != nil {
|
|
return GetSecretFolderByPathResponse{}, errors.NewGenericRequestError(operationGetSecretFolderByPath, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
if response.StatusCode() == http.StatusNotFound {
|
|
return GetSecretFolderByPathResponse{}, ErrNotFound
|
|
}
|
|
return GetSecretFolderByPathResponse{}, errors.NewAPIErrorWithResponse(operationGetSecretFolderByPath, response, nil)
|
|
}
|
|
|
|
return body, nil
|
|
}
|