Files

147 lines
4.9 KiB
Go

package kmsclient
import (
"fmt"
"github.com/hanzokms/terraform-provider/internal/errors"
"net/http"
)
type SecretSyncApp string
const (
SecretSyncAppGCPSecretManager SecretSyncApp = "gcp-secret-manager"
SecretSyncAppAWSParameterStore SecretSyncApp = "aws-parameter-store"
SecretSyncAppAWSSecretsManager SecretSyncApp = "aws-secrets-manager"
SecretSyncAppAzureAppConfiguration SecretSyncApp = "azure-app-configuration"
SecretSyncAppAzureKeyVault SecretSyncApp = "azure-key-vault"
SecretSyncAppAzureDevOps SecretSyncApp = "azure-devops"
SecretSyncAppGithub SecretSyncApp = "github"
SecretSyncApp1Password SecretSyncApp = "1password"
SecretSyncAppRender SecretSyncApp = "render"
SecretSyncAppBitbucket SecretSyncApp = "bitbucket"
SecretSyncAppDatabricks SecretSyncApp = "databricks"
SecretSyncAppCloudflareWorkers SecretSyncApp = "cloudflare-workers"
SecretSyncAppCloudflarePages SecretSyncApp = "cloudflare-pages"
SecretSyncAppSupabase SecretSyncApp = "supabase"
SecretSyncAppFlyio SecretSyncApp = "flyio"
SecretSyncAppGitlab SecretSyncApp = "gitlab"
)
type SecretSyncBehavior string
const (
SecretSyncBehaviorOverwriteDestination SecretSyncBehavior = "overwrite-destination"
SecretSyncBehaviorPrioritizeSource SecretSyncBehavior = "import-prioritize-source"
SecretSyncBehaviorPrioritizeDestination SecretSyncBehavior = "import-prioritize-destination"
)
const (
operationCreateSecretSync = "CallCreateSecretSync"
operationUpdateSecretSync = "CallUpdateSecretSync"
operationGetSecretSyncById = "CallGetSecretSyncById"
operationDeleteSecretSync = "CallDeleteSecretSync"
operationCheckDuplicateDestination = "CallCheckDuplicateDestination"
)
func (client Client) CreateSecretSync(request CreateSecretSyncRequest) (SecretSync, error) {
var body CreateSecretSyncResponse
response, err := client.Config.HttpClient.
R().
SetResult(&body).
SetHeader("User-Agent", USER_AGENT).
SetBody(request).
Post("api/v1/secret-syncs/" + string(request.App))
if err != nil {
return SecretSync{}, errors.NewGenericRequestError(operationCreateSecretSync, err)
}
if response.IsError() {
return SecretSync{}, errors.NewAPIErrorWithResponse(operationCreateSecretSync, response, nil)
}
return body.SecretSync, nil
}
func (client Client) UpdateSecretSync(request UpdateSecretSyncRequest) (SecretSync, error) {
var body UpdateSecretSyncResponse
response, err := client.Config.HttpClient.
R().
SetResult(&body).
SetHeader("User-Agent", USER_AGENT).
SetBody(request).
Patch(fmt.Sprintf("api/v1/secret-syncs/%s/%s", string(request.App), request.ID))
if err != nil {
return SecretSync{}, errors.NewGenericRequestError(operationUpdateSecretSync, err)
}
if response.IsError() {
return SecretSync{}, errors.NewAPIErrorWithResponse(operationUpdateSecretSync, response, nil)
}
return body.SecretSync, nil
}
func (client Client) GetSecretSyncById(request GetSecretSyncByIdRequest) (SecretSync, error) {
var body GetSecretSyncByIdResponse
response, err := client.Config.HttpClient.
R().
SetResult(&body).
SetHeader("User-Agent", USER_AGENT).
Get(fmt.Sprintf("api/v1/secret-syncs/%s/%s", string(request.App), request.ID))
if err != nil {
return SecretSync{}, errors.NewGenericRequestError(operationGetSecretSyncById, err)
}
if response.StatusCode() == http.StatusNotFound {
return SecretSync{}, ErrNotFound
}
if response.IsError() {
return SecretSync{}, errors.NewAPIErrorWithResponse(operationGetSecretSyncById, response, nil)
}
return body.SecretSync, nil
}
func (client Client) DeleteSecretSync(request DeleteSecretSyncRequest) (SecretSync, error) {
var body DeleteSecretSyncResponse
response, err := client.Config.HttpClient.
R().
SetResult(&body).
SetHeader("User-Agent", USER_AGENT).
Delete(fmt.Sprintf("api/v1/secret-syncs/%s/%s", string(request.App), request.ID))
if err != nil {
return SecretSync{}, errors.NewGenericRequestError(operationDeleteSecretSync, err)
}
if response.IsError() {
return SecretSync{}, errors.NewAPIErrorWithResponse(operationDeleteSecretSync, response, nil)
}
return body.SecretSync, nil
}
func (client Client) CheckDuplicateDestination(request CheckDuplicateDestinationRequest) (CheckDuplicateDestinationResponse, error) {
var body CheckDuplicateDestinationResponse
response, err := client.Config.HttpClient.
R().
SetResult(&body).
SetHeader("User-Agent", USER_AGENT).
SetBody(request).
Post(fmt.Sprintf("api/v1/secret-syncs/%s/check-destination", string(request.App)))
if err != nil {
return CheckDuplicateDestinationResponse{}, errors.NewGenericRequestError(operationCheckDuplicateDestination, err)
}
if response.IsError() {
return CheckDuplicateDestinationResponse{}, errors.NewAPIErrorWithResponse(operationCheckDuplicateDestination, response, nil)
}
return body, nil
}