storedsafe 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3284ce4b299b3a111699580ab7a144ece6586017688a190277f19db54750eab1
4
- data.tar.gz: 7712584e6f771e1825166aca610b349bc0067a9f3ea8d1742f9802a5362d41e6
3
+ metadata.gz: 2c21ee6c1c19d8c978e38fc35f06e80ab74f45fa89a4523accea45babbbbe592
4
+ data.tar.gz: e3d4001ef178c9f8da95e8de1c441c3d19736950e5bad25fba49652aa07e2a74
5
5
  SHA512:
6
- metadata.gz: 7d0ab608ef2f79adef486a5f3ed67828fe4327e43cccc4734649c4c1384e4cc7b8c48cf96e799b4bd1ad36ba2f6ff85ddd5310b76620e3a2c5d685447a26da80
7
- data.tar.gz: 130f06c1fb087a0d2a29e7e276a6f449ee45eef9a1f29813fc32ae1499de2920728bcfd6733cf122427bd488a8e6b7580841846e1d33d8056f9621f29001f1d8
6
+ metadata.gz: a2aa4eec337404560da5b5e54fcbc7f48ba1c324dd30874d90b1c4c9c1eea3e97d457b5b75525b604a7aa57a526b6d6b3852d7d3866693db4114b19297c7f96b
7
+ data.tar.gz: 8a1bca50bab2de5237e7a48be258202325a78bd4a2f44e2174eecf609039352c6239ecb3d19f65ff543e3674e83c918214f53cb92aae6f278382e02e1f47ff8c
data/README.md CHANGED
@@ -8,16 +8,24 @@ This is a ruby wrapper for the Storedsafe REST-like API (See full [docs here](ht
8
8
 
9
9
  Install from rubygems `gem install storedsafe`
10
10
 
11
- Add to Gemfile `gem 'storedsafe', '~> 0.0.1'`
11
+ Add to Gemfile `gem 'storedsafe', '~> 0.0.3'`
12
+
13
+ Alternatively, if you whish to install the gem manually, you can clone this repo and build the gem yourself.
14
+
15
+ ```
16
+ git clone https://github.com/storedsafe/storedsafe-ruby
17
+ cd storedsafe-ruby
18
+ gem build storedsafe.gemspec
19
+ gem install storedsafe-0.0.3.gem
20
+ ```
12
21
 
13
22
  ## Usage
14
23
  To pass a manual configuration, you simply pass a block to *Storedsafe.configure*.
15
24
  ```
16
25
  api = Storedsafe.configure do |config|
17
26
  config.server = 'storedsafe.example.com'
18
- config.api_token = 'abc123'
27
+ config.api_key = 'abc123'
19
28
  config.token = 'secret'
20
- config.username = 'bob'
21
29
  end
22
30
  ```
23
31
 
@@ -59,11 +67,11 @@ api.authenticate('abc123', 'abcdef123456', Storedsafe::API::LoginType::YUBIKEY)
59
67
  * retrieve\_template(template\_id)
60
68
 
61
69
  ### Objects
62
- * object(object\_id, decrypt=false)
70
+ * object(object\_id, decrypt: false, children: false)
63
71
  * create\_object(template\_id, group\_id, parent\_id, object\_name, template\_args)
64
72
  * edit\_object(object\_id, template\_id, group\_id, parent\_id, object\_name, template\_args)
65
73
  * delete\_object(object\_id)
66
- * find\_object(needle)
74
+ * find(needle)
67
75
 
68
76
  ## Configuration
69
77
  Configuration can be done in a few different ways. Other than the manual configuration, external configuration sources can be applied through the *config\_sources* array. This array contains Ruby Hashes with the fields that should be applied to the `Storedsafe::Config::Configurable` instance. By default fetch configurations through the `Storedsafe::Config::RcReader` and `Storedsafe::Config::EnvReader`.
data/lib/storedsafe.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
+ require 'storedsafe/api'
3
+ require 'storedsafe/config'
4
+ require 'storedsafe/parser'
2
5
 
3
6
  ##
4
7
  # Ruby wrapper for the Storedsafe RESTlike API.
5
8
  module Storedsafe
9
+ VERSION = '0.0.3'
10
+
6
11
  class << self
7
- require 'storedsafe/api'
8
- require 'storedsafe/config'
9
- require 'storedsafe/parser'
10
12
 
11
13
  ##
12
14
  # Set up a new API instance configured to communicate with your Storedsafe
@@ -12,6 +12,9 @@ require_relative 'api/vaults'
12
12
  require_relative 'api/templates'
13
13
 
14
14
  module Storedsafe
15
+ class ConnectionError < StandardError
16
+ end
17
+
15
18
  ##
16
19
  # Contains all interaction and configuration relating to the remote API.
17
20
  class API
@@ -52,7 +55,11 @@ module Storedsafe
52
55
  assign_verify_mode(http)
53
56
  request = create_request(method, uri, params)
54
57
 
55
- http.request(request) if request
58
+ res = http.request(request) if request
59
+ parse_body(res)
60
+
61
+ rescue SocketError => e
62
+ raise ConnectionError.new(e.message)
56
63
  end
57
64
 
58
65
  def assign_verify_mode(http)
@@ -10,17 +10,14 @@ module Storedsafe
10
10
  # @param [String] otp Yubikey press
11
11
  # @see authenticate Authentication with other OTP types.
12
12
  def authenticate_yubikey(passphrase, otp)
13
- res = request(
13
+ data = request(
14
14
  :post, '/auth',
15
15
  username: @username, keys: "#{passphrase}#{@api_key}#{otp}"
16
16
  )
17
- data = parse_body(res)
18
17
  @token = data['CALLINFO']['token']
19
18
  data
20
19
  end
21
20
 
22
- # rubocop:disable Metrics/MethodLength
23
-
24
21
  ##
25
22
  # Authenticates a user with specified OTP method.
26
23
  # @param [String] passphrase
@@ -31,23 +28,19 @@ module Storedsafe
31
28
  return authenticate_yubikey(passphrase, otp)
32
29
  end
33
30
 
34
- res = request(
31
+ data = request(
35
32
  :post, '/auth',
36
33
  username: @username, passphrase: passphrase, otp: otp,
37
34
  apikey: @api_key, logintype: logintype
38
35
  )
39
- data = parse_body(res)
40
36
  @token = data['CALLINFO']['token']
41
37
  data
42
38
  end
43
39
 
44
- # rubocop:enable Metrics/MethodLength
45
-
46
40
  ##
47
41
  # Invalidates the token.
48
42
  def logout
49
- res = request(:get, '/auth/logout', token: @token)
50
- data = parse_body(res)
43
+ data = request(:get, '/auth/logout', token: @token)
51
44
  @token = nil if data['CALLINFO']['status'] == 'SUCCESS'
52
45
  data
53
46
  end
@@ -56,8 +49,7 @@ module Storedsafe
56
49
  # Checks whether or not the token is valid and refreshes the
57
50
  # timeout for that token if valid.
58
51
  def check
59
- res = request(:get, '/auth/check', token: @token)
60
- parse_body(res)
52
+ request(:get, '/auth/check', token: @token)
61
53
  end
62
54
  end
63
55
  end
@@ -10,12 +10,16 @@ module Storedsafe
10
10
  # Lists all information regarding an object and optionally decrypts
11
11
  # encrypted fields.
12
12
  # @param [Integer] object_id
13
- # @param [Boolean] decrypt
14
- def object(object_id, decrypt = false)
15
- res = request(
16
- :get, "/object/#{object_id}", token: @token, decrypt: decrypt
13
+ # @param [Hash] options
14
+ # @option options [Boolean] :decrypt (false)
15
+ # @option options [Boolean] :children (false)
16
+ def object(object_id, options = {})
17
+ decrypt = options.fetch(:decrypt, false)
18
+ children = options.fetch(:children, false)
19
+ request(
20
+ :get, "/object/#{object_id}",
21
+ token: @token, decrypt: decrypt, children: children
17
22
  )
18
- parse_body(res)
19
23
  end
20
24
 
21
25
  ##
@@ -28,13 +32,12 @@ module Storedsafe
28
32
  def create_object(
29
33
  template_id, group_id, parent_id, object_name, template_args
30
34
  )
31
- res = request(
35
+ request(
32
36
  :post, '/object', {
33
37
  token: @token, templateid: template_id, groupid: group_id,
34
38
  parentid: parent_id, objectname: object_name
35
39
  }.merge(template_args)
36
40
  )
37
- parse_body(res)
38
41
  end
39
42
 
40
43
  ##
@@ -45,33 +48,30 @@ module Storedsafe
45
48
  # @param [Integer] parent_id ID of parent Object.
46
49
  # @param [String] object_name New Object name.
47
50
  # @param [Hash] template_args New Object values,
48
- # see Storedsafe::API#list_templates.
51
+ # see Storedsafe::API#list_templates.
49
52
  def edit_object(
50
53
  object_id, template_id, group_id, parent_id, object_name, template_args
51
54
  )
52
- res = request(
55
+ request(
53
56
  :put, "/object/#{object_id}", {
54
57
  token: @token, templateid: template_id, groupid: group_id,
55
58
  parentid: parent_id, objectname: object_name
56
59
  }.merge(template_args)
57
60
  )
58
- parse_body(res)
59
61
  end
60
62
 
61
63
  ##
62
64
  # Deletes an existing object.
63
65
  # @param [Integer] object_id
64
66
  def delete_object(object_id)
65
- res = request(:delete, "/object/#{object_id}", token: @token)
66
- parse_body(res)
67
+ request(:delete, "/object/#{object_id}", token: @token)
67
68
  end
68
69
 
69
70
  ##
70
71
  # Search in unencrypted data to find Objects.
71
72
  # @param [String] needle String to match Objects with.
72
- def find_object(needle)
73
- res = request(:get, '/find', token: @token, needle: needle)
74
- parse_body(res)
73
+ def find(needle)
74
+ request(:get, '/find', token: @token, needle: needle)
75
75
  end
76
76
 
77
77
  # rubocop:enable Metrics/ParameterLists
@@ -7,8 +7,7 @@ module Storedsafe
7
7
  ##
8
8
  # Obtains a list with information about all available templates.
9
9
  def list_templates
10
- res = request(:get, '/template', token: @token)
11
- parse_body(res)
10
+ request(:get, '/template', token: @token)
12
11
  end
13
12
 
14
13
  ##
@@ -16,8 +15,7 @@ module Storedsafe
16
15
  # @param [Integer] template_id
17
16
  # @see list_templates
18
17
  def retrieve_template(template_id)
19
- res = request(:get, "/template/#{template_id}", token: @token)
20
- parse_body(res)
18
+ request(:get, "/template/#{template_id}", token: @token)
21
19
  end
22
20
  end
23
21
  end
@@ -7,8 +7,7 @@ module Storedsafe
7
7
  ##
8
8
  # Lists all Vaults associated with the logged in user.
9
9
  def list_vaults
10
- res = request(:get, '/vault', token: @token)
11
- parse_body(res)
10
+ request(:get, '/vault', token: @token)
12
11
  end
13
12
 
14
13
  ##
@@ -16,8 +15,7 @@ module Storedsafe
16
15
  # @param [Integer] vault_id
17
16
  # @see list_vaults
18
17
  def list_objects(vault_id)
19
- res = request(:get, "/vault/#{vault_id}", token: @token)
20
- parse_body(res)
18
+ request(:get, "/vault/#{vault_id}", token: @token)
21
19
  end
22
20
 
23
21
  ##
@@ -27,12 +25,11 @@ module Storedsafe
27
25
  # @param [Integer] policy Password policy.
28
26
  # @param [String] description
29
27
  def create_vault(groupname, policy, description)
30
- res = request(
28
+ request(
31
29
  :post, '/vault',
32
30
  token: @token,
33
31
  groupname: groupname, policy: policy, description: description
34
32
  )
35
- parse_body(res)
36
33
  end
37
34
 
38
35
  ##
@@ -44,8 +41,7 @@ module Storedsafe
44
41
  # @option args [Integer] policy New password policy
45
42
  # @option args [String] description New Vault description.
46
43
  def edit_vault(vault_id, args)
47
- res = request(:put, "/vault/#{vault_id}", { token: @token }.merge(args))
48
- parse_body(res)
44
+ request(:put, "/vault/#{vault_id}", { token: @token }.merge(args))
49
45
  end
50
46
 
51
47
  ##
@@ -55,8 +51,7 @@ module Storedsafe
55
51
  # specified Vault.
56
52
  # @param [Integer] vault_id
57
53
  def delete_vault(vault_id)
58
- res = request(:delete, "/vault/#{vault_id}", token: @token)
59
- parse_body(res)
54
+ request(:delete, "/vault/#{vault_id}", token: @token)
60
55
  end
61
56
  end
62
57
  end
@@ -0,0 +1,3 @@
1
+ module Storedsafe
2
+ VERSION = '0.0.3'
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storedsafe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Mattsson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-13 00:00:00.000000000 Z
11
+ date: 2019-07-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: oscar_mattsson@live.se
@@ -30,6 +30,7 @@ files:
30
30
  - lib/storedsafe/config/rc_reader.rb
31
31
  - lib/storedsafe/parser.rb
32
32
  - lib/storedsafe/parser/raw_parser.rb
33
+ - lib/storedsafe/version.rb
33
34
  homepage: https://github.com/storedsafe/storedsafe-ruby
34
35
  licenses:
35
36
  - Apache-2.0
@@ -50,7 +51,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
51
  - !ruby/object:Gem::Version
51
52
  version: '0'
52
53
  requirements: []
53
- rubygems_version: 3.0.3
54
+ rubygems_version: 3.0.4
54
55
  signing_key:
55
56
  specification_version: 4
56
57
  summary: Storedsafe is a ruby wrapper for the Storedsafe REST-like API.