Class: BrainzLab::Vault::Client
- Inherits:
-
Object
- Object
- BrainzLab::Vault::Client
- Defined in:
- lib/brainzlab/vault/client.rb
Instance Method Summary collapse
- #delete(key) ⇒ Object
- #export(environment:, format:) ⇒ Object
- #get(key, environment:) ⇒ Object
-
#get_provider_key(provider:, model_type: 'llm') ⇒ Object
Get a specific provider key.
-
#get_provider_keys ⇒ Object
Get all provider keys for the current project Returns a hash of provider => decrypted_key.
-
#initialize(config) ⇒ Client
constructor
A new instance of Client.
- #list(environment:) ⇒ Object
- #provision(project_id:, app_name:) ⇒ Object
- #set(key, value, environment:, description: nil, note: nil) ⇒ Object
Constructor Details
#initialize(config) ⇒ Client
Returns a new instance of Client.
10 11 12 13 |
# File 'lib/brainzlab/vault/client.rb', line 10 def initialize(config) @config = config @base_url = config.vault_url || 'https://vault.brainzlab.ai' end |
Instance Method Details
#delete(key) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/brainzlab/vault/client.rb', line 68 def delete(key) response = request(:delete, "/api/v1/secrets/#{CGI.escape(key)}") response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPNoContent) rescue StandardError => e log_error('delete', e) false end |
#export(environment:, format:) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/brainzlab/vault/client.rb', line 76 def export(environment:, format:) params = { format: format } response = request( :get, '/api/v1/sync/export', headers: { 'X-Vault-Environment' => environment }, params: params ) return {} unless response.is_a?(Net::HTTPSuccess) case format when :json data = JSON.parse(response.body, symbolize_names: true) data[:secrets] || {} else response.body end rescue StandardError => e log_error('export', e) format == :json ? {} : '' end |
#get(key, environment:) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/brainzlab/vault/client.rb', line 15 def get(key, environment:) response = request( :get, "/api/v1/secrets/#{CGI.escape(key)}", headers: { 'X-Vault-Environment' => environment } ) return nil unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body, symbolize_names: true) data[:value] rescue StandardError => e log_error('get', e) nil end |
#get_provider_key(provider:, model_type: 'llm') ⇒ Object
Get a specific provider key
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/brainzlab/vault/client.rb', line 133 def get_provider_key(provider:, model_type: 'llm') response = request( :get, '/api/v1/provider_keys/resolve', params: { provider: provider, model_type: model_type } ) return nil unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body, symbolize_names: true) data[:key] rescue StandardError => e log_error('get_provider_key', e) nil end |
#get_provider_keys ⇒ Object
Get all provider keys for the current project Returns a hash of provider => decrypted_key
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/brainzlab/vault/client.rb', line 115 def get_provider_keys response = request(:get, '/api/v1/provider_keys/bulk') return {} unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body, symbolize_names: true) # Convert to simple hash: { openai: "sk-...", anthropic: "sk-..." } keys = {} (data[:keys] || []).each do |key_data| keys[key_data[:provider].to_sym] = key_data[:key] end keys rescue StandardError => e log_error('get_provider_keys', e) {} end |
#list(environment:) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/brainzlab/vault/client.rb', line 52 def list(environment:) response = request( :get, '/api/v1/secrets', headers: { 'X-Vault-Environment' => environment } ) return [] unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body, symbolize_names: true) data[:secrets] || [] rescue StandardError => e log_error('list', e) [] end |
#provision(project_id:, app_name:) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/brainzlab/vault/client.rb', line 99 def provision(project_id:, app_name:) response = request( :post, '/api/v1/projects/provision', body: { project_id: project_id, app_name: app_name }, use_service_key: true ) response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPCreated) rescue StandardError => e log_error('provision', e) false end |
#set(key, value, environment:, description: nil, note: nil) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/brainzlab/vault/client.rb', line 31 def set(key, value, environment:, description: nil, note: nil) body = { key: key, value: value, description: description, note: note }.compact response = request( :post, '/api/v1/secrets', headers: { 'X-Vault-Environment' => environment }, body: body ) response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPCreated) rescue StandardError => e log_error('set', e) false end |