bitwarden-sdk-secrets 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/secrets.rb ADDED
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module BitwardenSDKSecrets
6
+ class SecretsClient
7
+ def initialize(command_runner)
8
+ @command_runner = command_runner
9
+ end
10
+
11
+ def get(id)
12
+ command = create_command(get: SecretGetRequest.new(id: id))
13
+ response = run_command(command)
14
+
15
+ secrets_response = ResponseForSecretResponse.from_json!(response).to_dynamic
16
+
17
+ if secrets_response.key?('success') && secrets_response['success'] == true &&
18
+ secrets_response.key?('data')
19
+ return secrets_response['data']
20
+ end
21
+
22
+ error_response(secrets_response)
23
+ end
24
+
25
+ def get_by_ids(ids)
26
+ command = create_command(get_by_ids: SecretsGetRequest.new(ids: ids))
27
+ response = run_command(command)
28
+
29
+ secrets_response = ResponseForSecretIdentifiersResponse.from_json!(response).to_dynamic
30
+
31
+ if secrets_response.key?('success') && secrets_response['success'] == true &&
32
+ secrets_response.key?('data') && secrets_response['data'].key?('data')
33
+ return secrets_response['data']['data']
34
+ end
35
+
36
+ error_response(secrets_response)
37
+ end
38
+
39
+ def create(key, note, organization_id, project_ids, value)
40
+ command = create_command(
41
+ create: SecretCreateRequest.new(
42
+ key: key, note: note, organization_id: organization_id, project_ids: project_ids, value: value
43
+ )
44
+ )
45
+ response = run_command(command)
46
+
47
+ secrets_response = ResponseForSecretResponse.from_json!(response).to_dynamic
48
+
49
+ if secrets_response.key?('success') && secrets_response['success'] == true &&
50
+ secrets_response.key?('data')
51
+ return secrets_response['data']
52
+ end
53
+
54
+ error_response(secrets_response)
55
+ end
56
+
57
+ def list(organization_id)
58
+ command = create_command(list: SecretIdentifiersRequest.new(organization_id: organization_id))
59
+ response = run_command(command)
60
+
61
+ secrets_response = ResponseForSecretIdentifiersResponse.from_json!(response).to_dynamic
62
+
63
+ if secrets_response.key?('success') && secrets_response['success'] == true &&
64
+ secrets_response.key?('data') && secrets_response['data'].key?('data')
65
+ return secrets_response['data']['data']
66
+ end
67
+
68
+ error_response(secrets_response)
69
+ end
70
+
71
+ def update(id, key, note, organization_id, project_ids, value)
72
+ command = create_command(
73
+ update: SecretPutRequest.new(
74
+ id: id, key: key, note: note, organization_id: organization_id, project_ids: project_ids, value: value
75
+ )
76
+ )
77
+ response = run_command(command)
78
+
79
+ secrets_response = ResponseForSecretResponse.from_json!(response).to_dynamic
80
+
81
+ if secrets_response.key?('success') && secrets_response['success'] == true &&
82
+ secrets_response.key?('data')
83
+ return secrets_response['data']
84
+ end
85
+
86
+ error_response(secrets_response)
87
+ end
88
+
89
+ def delete_secret(ids)
90
+ command = create_command(delete: SecretsDeleteRequest.new(ids: ids))
91
+ response = run_command(command)
92
+
93
+ secrets_response = ResponseForSecretsDeleteResponse.from_json!(response).to_dynamic
94
+
95
+ if secrets_response.key?('success') && secrets_response['success'] == true &&
96
+ secrets_response.key?('data') && secrets_response['data'].key?('data')
97
+ return secrets_response['data']['data']
98
+ end
99
+
100
+ error_response(secrets_response)
101
+ end
102
+
103
+ private
104
+
105
+ def error_response(response)
106
+ if response['errorMessage']
107
+ raise BitwardenError, response['errorMessage'] if response.key?('errorMessage')
108
+ else
109
+ raise BitwardenError, 'Error while getting response'
110
+ end
111
+ end
112
+
113
+ def create_command(commands)
114
+ SelectiveCommand.new(secrets: SelectiveSecretsCommand.new(commands))
115
+ end
116
+
117
+ def run_command(command)
118
+ response = @command_runner.run(command)
119
+ raise BitwardenError, 'Error getting response' if response.nil?
120
+
121
+ response
122
+ end
123
+ end
124
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BitwardenSDKSecrets
4
+ VERSION = '0.1.0'
5
+ end
Binary file
@@ -0,0 +1,13 @@
1
+ require_relative '../lib/schemas'
2
+
3
+ class BitwardenClient
4
+ @command_runner: CommandRunner
5
+
6
+ attr_reader bitwarden: Module
7
+ attr_reader project_client: ProjectsClient
8
+ attr_reader secrets_client: SecretsClient
9
+
10
+ def initialize: (BitwardenSettings) -> void
11
+ def access_token_login: (String) -> JSON
12
+ def free_mem: () -> nil
13
+ end
@@ -0,0 +1,8 @@
1
+ require_relative '../lib/schemas'
2
+
3
+ class BitwardenSettings
4
+ attr_accessor api_url: String
5
+ attr_accessor identity_url: String
6
+
7
+ def initialize: (String, String) -> void
8
+ end
@@ -0,0 +1,4 @@
1
+ class CommandRunner
2
+ @bitwarden_sdk: Module
3
+ def run: -> String
4
+ end
@@ -0,0 +1,17 @@
1
+ require_once '../lib/extended_schemas/schemas.rbs'
2
+ require_once '../schemas.rbs'
3
+
4
+ class ProjectsClient
5
+ @command_runner: CommandRunner
6
+ def initialize: (command_runner: CommandRunner) -> void
7
+ def create_project: (project_name: String, organization_id: String) -> ProjectsResponse
8
+ def get: (project_id: String) -> ProjectsResponse
9
+ def list_projects: (organization_id: String) -> Array(DatumElement)
10
+ def update_project: (id: String, project_put_request_name: String, organization_id: String) -> ProjectsResponse
11
+ def delete_projects: (ids: Array[String]) -> Array(ProjectDeleteResponse)
12
+
13
+ private
14
+
15
+ def create_command: (SelectiveProjectsCommand) -> SelectiveCommand
16
+ def parse_response: (ResponseForProjectResponse) -> ResponseForProjectResponse
17
+ end
data/sig/sdk.rbs ADDED
@@ -0,0 +1,3 @@
1
+ module BitwardenSDK
2
+ VERSION: String
3
+ end
@@ -0,0 +1,18 @@
1
+ require_once '../lib/extended_schemas/schemas.rbs'
2
+ require_once '../schemas.rbs'
3
+
4
+ class SecretsClient
5
+ # @command_runner: CommandRunner
6
+ def initialize: (command_runner: CommandRunner) -> void
7
+ def get: (id: String) -> SecretResponse
8
+ def get_by_ids: (ids: Array[String]) -> Array(SecretIdentifierResponse)
9
+ def create: (key: String, note: String, organization_id: String, project_ids: Array[String], value: String) -> SecretResponse
10
+ def list: (organization_id: String) -> Array(SecretIdentifierResponse)
11
+ def update: (id: String, key: String, note: String, organization_id: String, project_ids: Array[String], value: String) -> SecretResponse
12
+ def delete_secret: (ids: Array[String]) -> Array(SecretDeleteResponse)
13
+
14
+ private
15
+
16
+ def create_command: (SelectiveSecretsCommand) -> SelectiveCommand
17
+ def parse_response: (SelectiveSecretCommand) -> ResponseForSecretResponse
18
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bitwarden-sdk-secrets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Bitwarden Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-02-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dry-struct
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-types
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ffi
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.15'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.15'
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.6'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '13.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '13.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.21'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.21'
97
+ description: Ruby wrapper for Bitwarden secrets manager SDK.
98
+ email:
99
+ - hello@bitwarden_sdk.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - Rakefile
105
+ - bitwarden-sdk-secrets.gemspec
106
+ - lib/bitwarden-sdk-secrets.rb
107
+ - lib/bitwarden_error.rb
108
+ - lib/bitwarden_lib.rb
109
+ - lib/command_runner.rb
110
+ - lib/extended_schemas/schemas.rb
111
+ - lib/linux-x64/libbitwarden_c.so
112
+ - lib/macos-arm64/libbitwarden_c.dylib
113
+ - lib/macos-x64/libbitwarden_c.dylib
114
+ - lib/projects.rb
115
+ - lib/schemas.rb
116
+ - lib/secrets.rb
117
+ - lib/version.rb
118
+ - lib/windows-x64/bitwarden_c.dll
119
+ - sig/bitwarden-sdk.rbs
120
+ - sig/bitwarden_settings.rbs
121
+ - sig/command_runner.rbs
122
+ - sig/projects_client.rbs
123
+ - sig/sdk.rbs
124
+ - sig/secrets_client.rbs
125
+ homepage: https://bitwarden.com/products/secrets-manager/
126
+ licenses: []
127
+ metadata:
128
+ homepage_uri: https://bitwarden.com/products/secrets-manager/
129
+ source_code_uri: https://github.com/bitwarden/sdk
130
+ changelog_uri: https://github.com/bitwarden/sdk/blob/main/languages/ruby/CHANGELOG.md
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 3.0.0
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubygems_version: 3.4.19
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: Bitwarden Secrets Manager SDK.
150
+ test_files: []