mirror of
https://github.com/hanzokms/terraform-provider.git
synced 2026-10-30 20:29:45 +00:00
149 lines
4.5 KiB
Go
149 lines
4.5 KiB
Go
package kmsclient
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/hanzokms/terraform-provider/internal/errors"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
operationCreateProject = "CallCreateProject"
|
|
operationDeleteProject = "CallDeleteProject"
|
|
operationGetProject = "CallGetProject"
|
|
operationUpdateProject = "CallUpdateProject"
|
|
operationUpdateProjectAuditLogRetention = "CallUpdateProjectAuditLogRetention"
|
|
operationGetProjectById = "CallGetProjectById"
|
|
)
|
|
|
|
func (client Client) CreateProject(request CreateProjectRequest) (CreateProjectResponse, error) {
|
|
|
|
if request.Slug == "" {
|
|
request = CreateProjectRequest{
|
|
ProjectName: request.ProjectName,
|
|
OrganizationSlug: request.OrganizationSlug,
|
|
}
|
|
}
|
|
|
|
var projectResponse CreateProjectResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&projectResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Post("api/v2/workspace")
|
|
|
|
if err != nil {
|
|
return CreateProjectResponse{}, errors.NewGenericRequestError(operationCreateProject, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return CreateProjectResponse{}, errors.NewAPIErrorWithResponse(operationCreateProject, response, nil)
|
|
}
|
|
|
|
return projectResponse, nil
|
|
}
|
|
|
|
func (client Client) DeleteProject(request DeleteProjectRequest) error {
|
|
var projectResponse DeleteProjectResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&projectResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
Delete(fmt.Sprintf("api/v2/workspace/%s", request.Slug))
|
|
|
|
if err != nil {
|
|
return errors.NewGenericRequestError(operationDeleteProject, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return errors.NewAPIErrorWithResponse(operationDeleteProject, response, nil)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (client Client) GetProject(request GetProjectRequest) (ProjectWithEnvironments, error) {
|
|
var projectResponse ProjectWithEnvironments
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&projectResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
Get(fmt.Sprintf("api/v2/workspace/%s", request.Slug))
|
|
|
|
if err != nil {
|
|
return ProjectWithEnvironments{}, errors.NewGenericRequestError(operationGetProject, err)
|
|
}
|
|
|
|
if response.StatusCode() == http.StatusNotFound {
|
|
return ProjectWithEnvironments{}, ErrNotFound
|
|
}
|
|
|
|
if response.IsError() {
|
|
return ProjectWithEnvironments{}, errors.NewAPIErrorWithResponse(operationGetProject, response, nil)
|
|
}
|
|
|
|
return projectResponse, nil
|
|
}
|
|
|
|
func (client Client) UpdateProject(request UpdateProjectRequest) (UpdateProjectResponse, error) {
|
|
var projectResponse UpdateProjectResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&projectResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Patch(fmt.Sprintf("api/v1/projects/%s", request.ProjectId))
|
|
|
|
if err != nil {
|
|
return UpdateProjectResponse{}, errors.NewGenericRequestError(operationUpdateProject, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return UpdateProjectResponse{}, errors.NewAPIErrorWithResponse(operationUpdateProject, response, nil)
|
|
}
|
|
|
|
return projectResponse, nil
|
|
}
|
|
|
|
func (client Client) UpdateProjectAuditLogRetention(request UpdateProjectAuditLogRetentionRequest) (UpdateProjectAuditLogRetentionResponse, error) {
|
|
var projectResponse UpdateProjectAuditLogRetentionResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&projectResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
SetBody(request).
|
|
Put(fmt.Sprintf("api/v1/workspace/%s/audit-logs-retention", request.ProjectSlug))
|
|
|
|
if err != nil {
|
|
return UpdateProjectAuditLogRetentionResponse{}, errors.NewGenericRequestError(operationUpdateProjectAuditLogRetention, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
return UpdateProjectAuditLogRetentionResponse{}, errors.NewAPIErrorWithResponse(operationUpdateProjectAuditLogRetention, response, nil)
|
|
}
|
|
|
|
return projectResponse, nil
|
|
}
|
|
|
|
func (client Client) GetProjectById(request GetProjectByIdRequest) (ProjectWithEnvironments, error) {
|
|
var projectResponse GetProjectByIdResponse
|
|
response, err := client.Config.HttpClient.
|
|
R().
|
|
SetResult(&projectResponse).
|
|
SetHeader("User-Agent", USER_AGENT).
|
|
Get(fmt.Sprintf("api/v1/workspace/%s", request.ID))
|
|
|
|
if err != nil {
|
|
return ProjectWithEnvironments{}, errors.NewGenericRequestError(operationGetProjectById, err)
|
|
}
|
|
|
|
if response.IsError() {
|
|
if response.StatusCode() == http.StatusNotFound {
|
|
return ProjectWithEnvironments{}, ErrNotFound
|
|
}
|
|
return ProjectWithEnvironments{}, errors.NewAPIErrorWithResponse(operationGetProjectById, response, nil)
|
|
}
|
|
|
|
return projectResponse.Workspace, nil
|
|
}
|