mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 06:26:42 +00:00
Feat: Implementation of Go SDK
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/Infisical/infisical/k8-operator/packages/crypto"
|
"github.com/Infisical/infisical/k8-operator/packages/crypto"
|
||||||
"github.com/Infisical/infisical/k8-operator/packages/model"
|
"github.com/Infisical/infisical/k8-operator/packages/model"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
infisical "github.com/infisical/go-sdk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DecodedSymmetricEncryptionDetails = struct {
|
type DecodedSymmetricEncryptionDetails = struct {
|
||||||
@@ -51,29 +52,26 @@ func GetServiceTokenDetails(infisicalToken string) (api.GetServiceTokenDetailsRe
|
|||||||
return serviceTokenDetails, nil
|
return serviceTokenDetails, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPlainTextSecretsViaUniversalAuth(accessToken string, etag string, secretScope v1alpha1.MachineIdentityScopeInWorkspace) ([]model.SingleEnvironmentVariable, model.RequestUpdateUpdateDetails, error) {
|
func GetPlainTextSecretsViaMachineIdentity(infisicalClient infisical.InfisicalClientInterface, etag string, secretScope v1alpha1.MachineIdentityScopeInWorkspace) ([]model.SingleEnvironmentVariable, model.RequestUpdateUpdateDetails, error) {
|
||||||
|
|
||||||
httpClient := resty.New()
|
secrets, err := infisicalClient.Secrets().List(infisical.ListSecretsOptions{
|
||||||
httpClient.SetAuthScheme("Bearer")
|
|
||||||
httpClient.SetAuthToken(accessToken)
|
|
||||||
|
|
||||||
secretsResponse, err := api.CallGetDecryptedSecretsV3(httpClient, api.GetDecryptedSecretsV3Request{
|
|
||||||
ProjectSlug: secretScope.ProjectSlug,
|
ProjectSlug: secretScope.ProjectSlug,
|
||||||
Environment: secretScope.EnvSlug,
|
Environment: secretScope.EnvSlug,
|
||||||
Recursive: secretScope.Recursive,
|
Recursive: secretScope.Recursive,
|
||||||
SecretPath: secretScope.SecretsPath,
|
SecretPath: secretScope.SecretsPath,
|
||||||
|
IncludeImports: true,
|
||||||
ExpandSecretReferences: true,
|
ExpandSecretReferences: true,
|
||||||
ETag: etag,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, model.RequestUpdateUpdateDetails{}, err
|
return nil, model.RequestUpdateUpdateDetails{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var secrets []model.SingleEnvironmentVariable
|
var environmentVariables []model.SingleEnvironmentVariable
|
||||||
|
|
||||||
for _, secret := range secretsResponse.Secrets {
|
for _, secret := range secrets {
|
||||||
secrets = append(secrets, model.SingleEnvironmentVariable{
|
|
||||||
|
environmentVariables = append(environmentVariables, model.SingleEnvironmentVariable{
|
||||||
Key: secret.SecretKey,
|
Key: secret.SecretKey,
|
||||||
Value: secret.SecretValue,
|
Value: secret.SecretValue,
|
||||||
Type: secret.Type,
|
Type: secret.Type,
|
||||||
@@ -81,15 +79,11 @@ func GetPlainTextSecretsViaUniversalAuth(accessToken string, etag string, secret
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// No need to do expansion for Machine Identity auth as this is handled on server-side.
|
newEtag := crypto.ComputeEtag([]byte(fmt.Sprintf("%v", environmentVariables)))
|
||||||
mergedSecrets := MergeRawImportedSecrets(secrets, secretsResponse.Imports)
|
|
||||||
if err != nil {
|
|
||||||
return nil, model.RequestUpdateUpdateDetails{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return mergedSecrets, model.RequestUpdateUpdateDetails{
|
return environmentVariables, model.RequestUpdateUpdateDetails{
|
||||||
Modified: secretsResponse.Modified,
|
Modified: etag != newEtag,
|
||||||
ETag: secretsResponse.ETag,
|
ETag: newEtag,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user