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.
- checksums.yaml +7 -0
- data/Rakefile +11 -0
- data/bitwarden-sdk-secrets.gemspec +47 -0
- data/lib/bitwarden-sdk-secrets.rb +56 -0
- data/lib/bitwarden_error.rb +9 -0
- data/lib/bitwarden_lib.rb +35 -0
- data/lib/command_runner.rb +15 -0
- data/lib/extended_schemas/schemas.rb +64 -0
- data/lib/linux-x64/libbitwarden_c.so +0 -0
- data/lib/macos-arm64/libbitwarden_c.dylib +0 -0
- data/lib/macos-x64/libbitwarden_c.dylib +0 -0
- data/lib/projects.rb +116 -0
- data/lib/schemas.rb +3450 -0
- data/lib/secrets.rb +124 -0
- data/lib/version.rb +5 -0
- data/lib/windows-x64/bitwarden_c.dll +0 -0
- data/sig/bitwarden-sdk.rbs +13 -0
- data/sig/bitwarden_settings.rbs +8 -0
- data/sig/command_runner.rbs +4 -0
- data/sig/projects_client.rbs +17 -0
- data/sig/sdk.rbs +3 -0
- data/sig/secrets_client.rbs +18 -0
- metadata +150 -0
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
|
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,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,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: []
|