From ab5f69e356956c2a6d70ff94dbdff3f39fce671e Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Sat, 26 Oct 2024 22:49:07 +0400 Subject: [PATCH 1/3] fix: ruby sdk command failure --- .gitignore | 2 + .../ruby/infisical-sdk/lib/clients/secrets.rb | 2 + .../lib/extended_schemas/schemas.rb | 38 +++++++++++++++++++ .../ruby/infisical-sdk/lib/infisical-sdk.rb | 5 ++- .../sig/infisical_sdk/secrets_client.rbs | 1 + 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 languages/ruby/infisical-sdk/lib/extended_schemas/schemas.rb 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/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..ab4af69 100644 --- a/languages/ruby/infisical-sdk/lib/infisical-sdk.rb +++ b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb @@ -4,7 +4,7 @@ require 'dry-types' require_relative 'schemas' -require_relative 'extended_schemas/schemas' +# require_relative 'extended_schemas/schemas' require_relative 'infisical_lib' require_relative 'infisical_error' require_relative 'command_runner' @@ -16,13 +16,14 @@ module InfisicalSDK class InfisicalClient attr_reader :infisical, :command_runner, :secrets, :auth, :cryptography - def initialize(site_url = nil, cache_ttl = 300) + def initialize(site_url = "https://app.infisical.com", cache_ttl = 300) settings = ClientSettings.new( # We preset these values or we'll get type validation errors (thanks Quicktype!) access_token: nil, 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 From d9f045984a8da2b1c760bdcf22bc8908fcd2fc63 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Sat, 26 Oct 2024 22:51:49 +0400 Subject: [PATCH 2/3] Update infisical-sdk.rb --- languages/ruby/infisical-sdk/lib/infisical-sdk.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/ruby/infisical-sdk/lib/infisical-sdk.rb b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb index ab4af69..438c9c4 100644 --- a/languages/ruby/infisical-sdk/lib/infisical-sdk.rb +++ b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb @@ -4,7 +4,7 @@ require 'dry-types' require_relative 'schemas' -# require_relative 'extended_schemas/schemas' +require_relative 'extended_schemas/schemas' require_relative 'infisical_lib' require_relative 'infisical_error' require_relative 'command_runner' From 02bc13b2e153f91ea8cda99e23bbc8ca4cd7cbed Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Sat, 26 Oct 2024 23:15:31 +0400 Subject: [PATCH 3/3] tests fix --- crates/infisical/src/error.rs | 15 ++++++++++++--- languages/ruby/infisical-sdk/lib/infisical-sdk.rb | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) 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/infisical-sdk.rb b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb index 438c9c4..193cde9 100644 --- a/languages/ruby/infisical-sdk/lib/infisical-sdk.rb +++ b/languages/ruby/infisical-sdk/lib/infisical-sdk.rb @@ -16,7 +16,7 @@ module InfisicalSDK class InfisicalClient attr_reader :infisical, :command_runner, :secrets, :auth, :cryptography - def initialize(site_url = "https://app.infisical.com", cache_ttl = 300) + def initialize(site_url = nil, cache_ttl = 300) settings = ClientSettings.new( # We preset these values or we'll get type validation errors (thanks Quicktype!) access_token: nil,