diff --git a/.gitignore b/.gitignore index 8292893..6ea7d9e 100644 --- a/.gitignore +++ b/.gitignore @@ -154,6 +154,8 @@ languages/node/examples/lambda-node/**/* # Schemas, no reason having these on github because they're auto generated crates/infisical-napi/**/schemas.ts languages/*/**/schemas.* +!languages/*/**/extended_schemas/schemas.rb + .DS_Store diff --git a/crates/infisical/src/error.rs b/crates/infisical/src/error.rs index 9622788..0262463 100644 --- a/crates/infisical/src/error.rs +++ b/crates/infisical/src/error.rs @@ -78,8 +78,8 @@ pub enum Error { SecretBadRequest { message: String }, // Access token 404 error - #[error("Failed to authenticate, did you provide the correct site URL?")] - NotFoundAccessTokenRequest, + #[error("Failed to authenticate, did you provide the correct site URL?, {}", .message)] + NotFoundAccessTokenRequest { message: String }, // Access token 401 error #[error("[Failed to authenticate]: Did you provide the correct client ID and secret?")] @@ -117,7 +117,16 @@ pub async fn api_error_handler( ) -> Result { if status == StatusCode::NOT_FOUND { if is_auth_request { - return Err(Error::NotFoundAccessTokenRequest); + let r = res.json::().await; + + match r { + Ok(r) => return Err(Error::NotFoundAccessTokenRequest { message: r.message }), + Err(_) => { + return Err(Error::NotFoundAccessTokenRequest { + message: "Unknown error".to_string(), + }) + } + } } let s = match secret_name { diff --git a/languages/ruby/infisical-sdk/lib/clients/secrets.rb b/languages/ruby/infisical-sdk/lib/clients/secrets.rb index a07a565..1b9a23b 100644 --- a/languages/ruby/infisical-sdk/lib/clients/secrets.rb +++ b/languages/ruby/infisical-sdk/lib/clients/secrets.rb @@ -17,6 +17,7 @@ def get( secret_name:, project_id:, environment:, + expand_secret_references: true, path: nil, include_imports: nil, type: nil @@ -28,6 +29,7 @@ def get( environment: environment, path: path, include_imports: include_imports, + expand_secret_references: expand_secret_references, get_secret_options_type: type )) diff --git a/languages/ruby/infisical-sdk/lib/extended_schemas/schemas.rb b/languages/ruby/infisical-sdk/lib/extended_schemas/schemas.rb new file mode 100644 index 0000000..12d210a --- /dev/null +++ b/languages/ruby/infisical-sdk/lib/extended_schemas/schemas.rb @@ -0,0 +1,38 @@ +module InfisicalSDK + # Command mapper + class InfisicalCommands < Command + attribute :get_secret, Types.Constructor(GetSecretOptions).optional.default(nil) + attribute :list_secrets, Types.Constructor(ListSecretsOptions).optional.default(nil) + attribute :create_secret, Types.Constructor(CreateSecretOptions).optional.default(nil) + attribute :update_secret, Types.Constructor(UpdateSecretOptions).optional.default(nil) + attribute :delete_secret, Types.Constructor(DeleteSecretOptions).optional.default(nil) + attribute :create_symmetric_key, Types.Constructor(ArbitraryOptions).optional.default(nil) + attribute :encrypt_symmetric, Types.Constructor(EncryptSymmetricOptions).optional.default(nil) + attribute :decrypt_symmetric, Types.Constructor(DecryptSymmetricOptions).optional.default(nil) + attribute :universal_auth_login, Types.Constructor(UniversalAuthLoginClass).optional.default(nil) + attribute :kubernetes_auth_login, Types.Constructor(KubernetesAuthLoginClass).optional.default(nil) + attribute :azure_auth_login, Types.Constructor(AzureAuthLoginClass).optional.default(nil) + attribute :gcp_id_token_auth_login, Types.Constructor(GcpIDTokenAuthLoginClass).optional.default(nil) + attribute :gcp_iam_auth_login, Types.Constructor(GcpIamAuthLoginClass).optional.default(nil) + attribute :aws_iam_auth_login, Types.Constructor(AwsIamAuthLoginClass).optional.default(nil) + + def to_dynamic + { + "getSecret" => get_secret&.to_dynamic, + "listSecrets" => list_secrets&.to_dynamic, + "createSecret" => create_secret&.to_dynamic, + "updateSecret" => update_secret&.to_dynamic, + "deleteSecret" => delete_secret&.to_dynamic, + "createSymmetricKey" => create_symmetric_key&.to_dynamic, + "encryptSymmetric" => encrypt_symmetric&.to_dynamic, + "decryptSymmetric" => decrypt_symmetric&.to_dynamic, + "universalAuthLogin" => universal_auth_login&.to_dynamic, + "kubernetesAuthLogin" => kubernetes_auth_login&.to_dynamic, + "azureAuthLogin" => azure_auth_login&.to_dynamic, + "gcpIdTokenAuthLogin" => gcp_id_token_auth_login&.to_dynamic, + "gcpIamAuthLogin" => gcp_iam_auth_login&.to_dynamic, + "awsIamAuthLogin" => aws_iam_auth_login&.to_dynamic, + }.compact + end + end +end diff --git a/languages/ruby/infisical-sdk/lib/infisical-sdk.rb b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb index 375d77f..193cde9 100644 --- a/languages/ruby/infisical-sdk/lib/infisical-sdk.rb +++ b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb @@ -23,6 +23,7 @@ def initialize(site_url = nil, cache_ttl = 300) client_secret: nil, client_id: nil, auth: nil, + ssl_certificate_path: nil, user_agent: 'infisical-ruby-sdk', cache_ttl: cache_ttl, site_url: site_url diff --git a/languages/ruby/infisical-sdk/sig/infisical_sdk/secrets_client.rbs b/languages/ruby/infisical-sdk/sig/infisical_sdk/secrets_client.rbs index e7f282d..103b7cd 100644 --- a/languages/ruby/infisical-sdk/sig/infisical_sdk/secrets_client.rbs +++ b/languages/ruby/infisical-sdk/sig/infisical_sdk/secrets_client.rbs @@ -8,6 +8,7 @@ module InfisicalSDK project_id: String, environment: String, path: String?, + expand_secret_references: bool?, include_imports: bool?, type: String? ) -> InfisicalSecret