Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add new api endpoints, remove third party packages usage #149

Merged
merged 3 commits into from
Jun 20, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: revert generic result struct change
  • Loading branch information
iljaSL committed Jun 19, 2024
commit a2e1e5e8a5b0fe6484ed6e5deb7a3d1e0c19fb68
53 changes: 26 additions & 27 deletions api/authorizer/client.go
Original file line number Diff line number Diff line change
@@ -9,7 +9,6 @@ package authorizer
import (
"net/url"

"github.com/SSHcom/privx-sdk-go/common"
"github.com/SSHcom/privx-sdk-go/restapi"
)

@@ -305,8 +304,8 @@ func (auth *Client) DownloadWebProxyConfig(trustedClientID, sessionID, filename
}

// CertTemplates returns the certificate authentication templates for the service
func (auth *Client) CertTemplates(service string) (common.Result[CertTemplate], error) {
result := common.Result[CertTemplate]{}
func (auth *Client) CertTemplates(service string) ([]CertTemplate, error) {
result := templatesResult{}
filters := Params{
Service: service,
}
@@ -316,7 +315,7 @@ func (auth *Client) CertTemplates(service string) (common.Result[CertTemplate],
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// SSLTrustAnchor returns the SSL trust anchor (PrivX TLS CA certificate)
@@ -343,21 +342,21 @@ func (auth *Client) ExtenderTrustAnchor() (*TrustAnchor, error) {

// MARK: Access Groups
// AccessGroups lists all access group
func (auth *Client) AccessGroups(offset, limit int, sortkey, sortdir string) (common.Result[AccessGroup], error) {
func (auth *Client) AccessGroups(offset, limit int, sortkey, sortdir string) ([]AccessGroup, error) {
filters := Params{
Offset: offset,
Limit: limit,
Sortkey: sortkey,
Sortdir: sortdir,
}
result := common.Result[AccessGroup]{}
result := accessGroupResult{}

_, err := auth.api.
URL("/authorizer/api/v1/accessgroups").
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// CreateAccessGroup create a access group
@@ -374,21 +373,21 @@ func (auth *Client) CreateAccessGroup(accessGroup *AccessGroup) (string, error)
}

// SearchAccessGroup search for access groups
func (auth *Client) SearchAccessGroup(offset, limit int, sortkey, sortdir string, search *SearchParams) (common.Result[AccessGroup], error) {
func (auth *Client) SearchAccessGroup(offset, limit int, sortkey, sortdir string, search *SearchParams) ([]AccessGroup, error) {
filters := Params{
Offset: offset,
Limit: limit,
Sortkey: sortkey,
Sortdir: sortdir,
}
result := common.Result[AccessGroup]{}
result := accessGroupResult{}

_, err := auth.api.
URL("/authorizer/api/v1/accessgroups/search").
Query(&filters).
Post(search, &result)

return result, err
return result.Items, err
}

// AccessGroup get access group
@@ -442,26 +441,26 @@ func (auth *Client) DeleteAccessGroupsIdCas(accessGroupID string, caID string) e

// MARK: Certs
// SearchCert search for certificates
func (auth *Client) SearchCert(offset, limit int, sortkey, sortdir string, cert *APICertificateSearch) (common.Result[APICertificate], error) {
func (auth *Client) SearchCert(offset, limit int, sortkey, sortdir string, cert *APICertificateSearch) ([]APICertificate, error) {
filters := Params{
Offset: offset,
Limit: limit,
Sortkey: sortkey,
Sortdir: sortdir,
}
result := common.Result[APICertificate]{}
result := apiCertificateResult{}

_, err := auth.api.
URL("/authorizer/api/v1/cert/search").
Query(&filters).
Post(cert, &result)

return result, err
return result.Items, err
}

// Get all Certificates
func (auth *Client) GetAllCertificates() (common.Result[APICertificate], error) {
certificates := common.Result[APICertificate]{}
func (auth *Client) GetAllCertificates() (apiCertificateResult, error) {
certificates := apiCertificateResult{}

_, err := auth.api.
URL("/authorizer/api/v1/cert").
@@ -483,65 +482,65 @@ func (auth *Client) GetCertByID(ID string) (ApiCertificateObject, error) {

// MARK: Secrets
// AccountSecrets lists all account secrets
func (auth *Client) AccountSecrets(limit int, sortdir string) (common.Result[AccountSecrets], error) {
func (auth *Client) AccountSecrets(limit int, sortdir string) ([]AccountSecrets, error) {
filters := Params{
Limit: limit,
Sortdir: sortdir,
}
result := common.Result[AccountSecrets]{}
result := accountSecretsResult{}

_, err := auth.api.
URL("/authorizer/api/v1/secrets").
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// SearchAccountSecrets search for account secrets
func (auth *Client) SearchAccountSecrets(limit int, sortdir string, search *AccountSecretsSearchRequest) (common.Result[AccountSecrets], error) {
func (auth *Client) SearchAccountSecrets(limit int, sortdir string, search *AccountSecretsSearchRequest) ([]AccountSecrets, error) {
filters := Params{
Limit: limit,
Sortdir: sortdir,
}
result := common.Result[AccountSecrets]{}
result := accountSecretsResult{}

_, err := auth.api.
URL("/authorizer/api/v1/secrets/search").
Query(&filters).
Post(search, &result)

return result, err
return result.Items, err
}

// CheckoutAccountSecret checkout account secret
func (auth *Client) CheckoutAccountSecret(path string) (common.Result[Checkout], error) {
func (auth *Client) CheckoutAccountSecret(path string) ([]Checkout, error) {
checkoutReq := CheckoutRequest{
Path: path,
}
result := common.Result[Checkout]{}
result := checkoutResult{}

_, err := auth.api.
URL("/authorizer/api/v1/secrets/checkouts").
Post(checkoutReq, &result)

return result, err
return result.Items, err
}

// Checkouts lists secret checkouts
func (auth *Client) Checkouts(limit int, sortdir string) (common.Result[Checkout], error) {
func (auth *Client) Checkouts(limit int, sortdir string) ([]Checkout, error) {
filters := Params{
Limit: limit,
Sortdir: sortdir,
}
result := common.Result[Checkout]{}
result := checkoutResult{}

_, err := auth.api.
URL("/authorizer/api/v1/secrets/checkouts").
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// Checkout get checkout by id
25 changes: 25 additions & 0 deletions api/authorizer/model.go
Original file line number Diff line number Diff line change
@@ -246,3 +246,28 @@ type TargetDomain struct {
Name string `json:"name,omitempty"`
Deleted bool `json:"deleted,omitempty"`
}

type templatesResult struct {
Count int `json:"count"`
Items []CertTemplate `json:"items"`
}

type accessGroupResult struct {
Count int `json:"count"`
Items []AccessGroup `json:"items"`
}

type apiCertificateResult struct {
Count int `json:"count"`
Items []APICertificate `json:"items"`
}

type accountSecretsResult struct {
Count int `json:"count"`
Items []AccountSecrets `json:"items"`
}

type checkoutResult struct {
Count int `json:"count"`
Items []Checkout `json:"items"`
}
48 changes: 24 additions & 24 deletions api/secretsmanager/client.go
Original file line number Diff line number Diff line change
@@ -30,14 +30,14 @@ func (s *Client) SecretsManagerStatus() (*common.ServiceStatus, error) {

// MARK: Password Policies
// PasswordPolicies lists all password policies
func (s *Client) PasswordPolicies() (common.Result[PasswordPolicy], error) {
result := common.Result[PasswordPolicy]{}
func (s *Client) PasswordPolicies() ([]PasswordPolicy, error) {
result := pwPolicyResult{}

_, err := s.api.
URL("/secrets-manager/api/v1/password-policies").
Get(&result)

return result, err
return result.Items, err
}

// CreatePasswordPolicy create a password policy
@@ -94,14 +94,14 @@ func (s *Client) RotatePassword(hostId, account string) error {

// MARK: Manage rotation scripts
// ScriptTemplates lists all script templates
func (s *Client) ScriptTemplates() (common.Result[ScriptTemplate], error) {
result := common.Result[ScriptTemplate]{}
func (s *Client) ScriptTemplates() ([]ScriptTemplate, error) {
result := scriptTemplateResult{}

_, err := s.api.
URL("/secrets-manager/api/v1/script-templates").
Get(&result)

return result, err
return result.Items, err
}

// CreateScriptTemplate create a script template
@@ -161,8 +161,8 @@ func (s *Client) CompileScript(r CompileScriptRequest) (string, error) {

// MARK: Target domains
// TargetDomains lists all target domains
func (s *Client) TargetDomains(offset, limit int, sortkey, sortdir string) (common.Result[TargetDomain], error) {
result := common.Result[TargetDomain]{}
func (s *Client) TargetDomains(offset, limit int, sortkey, sortdir string) ([]TargetDomain, error) {
result := tdResult{}
filters := Params{
Offset: offset,
Limit: limit,
@@ -175,7 +175,7 @@ func (s *Client) TargetDomains(offset, limit int, sortkey, sortdir string) (comm
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// CreateTargetDomain create a target domain
@@ -192,8 +192,8 @@ func (s *Client) CreateTargetDomain(td TargetDomain) (string, error) {
}

// SearchTargetDomain search for existing target domain
func (s *Client) SearchTargetDomain(sortkey, sortdir string, offset, limit int, searchObject TargetDomainsSearch) (common.Result[TargetDomain], error) {
result := common.Result[TargetDomain]{}
func (s *Client) SearchTargetDomain(sortkey, sortdir string, offset, limit int, searchObject TargetDomainsSearch) ([]TargetDomain, error) {
result := tdResult{}
filters := Params{
Offset: offset,
Limit: limit,
@@ -206,7 +206,7 @@ func (s *Client) SearchTargetDomain(sortkey, sortdir string, offset, limit int,
Query(&filters).
Post(&searchObject, &result)

return result, err
return result.Items, err
}

// TargetDomain get target domain by id
@@ -249,8 +249,8 @@ func (s *Client) RefreshTargetDomain(tdId string) error {

// MARK: Target domain accounts
// TargetDomainAccounts lists all accounts in target domain
func (s *Client) TargetDomainAccounts(offset, limit int, sortkey, sortdir, tdId string) (common.Result[ScannedAccount], error) {
result := common.Result[ScannedAccount]{}
func (s *Client) TargetDomainAccounts(offset, limit int, sortkey, sortdir, tdId string) ([]ScannedAccount, error) {
result := scannedAccountResult{}
filters := Params{
Offset: offset,
Limit: limit,
@@ -263,12 +263,12 @@ func (s *Client) TargetDomainAccounts(offset, limit int, sortkey, sortdir, tdId
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// SearchTargetDomainAccounts search accounts in target domain
func (s *Client) SearchTargetDomainAccounts(sortkey, sortdir, tdId string, offset, limit int, searchObject ScannedAccountsSearch) (common.Result[ScannedAccount], error) {
result := common.Result[ScannedAccount]{}
func (s *Client) SearchTargetDomainAccounts(sortkey, sortdir, tdId string, offset, limit int, searchObject ScannedAccountsSearch) ([]ScannedAccount, error) {
result := scannedAccountResult{}
filters := Params{
Offset: offset,
Limit: limit,
@@ -281,7 +281,7 @@ func (s *Client) SearchTargetDomainAccounts(sortkey, sortdir, tdId string, offse
Query(&filters).
Post(&searchObject, &result)

return result, err
return result.Items, err
}

// TargetDomainAccount get target domain account
@@ -315,8 +315,8 @@ func (s *Client) BatchUpdateTargetDomain(tdId string, change ScannedAccountEditB

// MARK: Managed accounts
// ManagedAccounts lists all managed accounts in a target domain
func (s *Client) ManagedAccounts(offset, limit int, sortkey, sortdir, tdId string) (common.Result[ManagedAccount], error) {
result := common.Result[ManagedAccount]{}
func (s *Client) ManagedAccounts(offset, limit int, sortkey, sortdir, tdId string) ([]ManagedAccount, error) {
result := managedAccountResult{}
filters := Params{
Offset: offset,
Limit: limit,
@@ -329,7 +329,7 @@ func (s *Client) ManagedAccounts(offset, limit int, sortkey, sortdir, tdId strin
Query(&filters).
Get(&result)

return result, err
return result.Items, err
}

// CreateManagedAccount create a managed account
@@ -346,8 +346,8 @@ func (s *Client) CreateManagedAccount(tdId string, ma ManagedAccount) (string, e
}

// SearchManagedAccounts search managed accounts in a target domain
func (s *Client) SearchManagedAccounts(sortkey, sortdir, tdId string, offset, limit int, searchObject ManagedAccountsSearch) (common.Result[ManagedAccount], error) {
result := common.Result[ManagedAccount]{}
func (s *Client) SearchManagedAccounts(sortkey, sortdir, tdId string, offset, limit int, searchObject ManagedAccountsSearch) ([]ManagedAccount, error) {
result := managedAccountResult{}
filters := Params{
Offset: offset,
Limit: limit,
@@ -360,7 +360,7 @@ func (s *Client) SearchManagedAccounts(sortkey, sortdir, tdId string, offset, li
Query(&filters).
Post(&searchObject, &result)

return result, err
return result.Items, err
}

// ManagedAccount get managed account
25 changes: 25 additions & 0 deletions api/secretsmanager/model.go
Original file line number Diff line number Diff line change
@@ -250,3 +250,28 @@ type ManagedAccountChangeSet struct {
type ManagedAccountBatch struct {
IDs []string `json:"ids"`
}

type pwPolicyResult struct {
Count int `json:"count"`
Items []PasswordPolicy `json:"items"`
}

type scriptTemplateResult struct {
Count int `json:"count"`
Items []ScriptTemplate `json:"items"`
}

type tdResult struct {
Count int `json:"count"`
Items []TargetDomain `json:"items"`
}

type scannedAccountResult struct {
Count int `json:"count"`
Items []ScannedAccount `json:"items"`
}

type managedAccountResult struct {
Count int `json:"count"`
Items []ManagedAccount `json:"items"`
}
Loading
Loading