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: []
|