conjur-api 2.1.4 → 2.1.5

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.
@@ -1,5 +1,5 @@
1
1
  module Conjur
2
2
  class API
3
- VERSION = "2.1.4"
3
+ VERSION = "2.1.5"
4
4
  end
5
5
  end
@@ -2,11 +2,11 @@ module Conjur
2
2
  module ActsAsAsset
3
3
  def self.included(base)
4
4
  base.instance_eval do
5
- include ActsAsResource
6
- include HasAttributes
7
- include Exists
8
5
  include HasId
6
+ include Exists
9
7
  include HasOwner
8
+ include ActsAsResource
9
+ include HasAttributes
10
10
  end
11
11
  end
12
12
  end
@@ -6,7 +6,8 @@ module Conjur
6
6
  end
7
7
 
8
8
  def resource_kind
9
- self.class.name.split("::")[1..-1].join('-').downcase
9
+ require 'active_support/core_ext'
10
+ self.class.name.split("::")[-1].underscore.split('/').join('-')
10
11
  end
11
12
 
12
13
  def resource_id
@@ -18,6 +18,10 @@ class RestClient::Resource
18
18
  include Conjur::LogSource
19
19
  extend Conjur::BuildFromResponse
20
20
 
21
+ def to_json(options = {})
22
+ {}
23
+ end
24
+
21
25
  def path_components
22
26
  require 'uri'
23
27
  URI.parse(self.url).path.split('/').map{|e| URI.unescape e}
@@ -20,9 +20,16 @@ module Conjur
20
20
  class << self
21
21
  # Parse a role id into [ account, 'roles', kind, id ]
22
22
  def parse_role_id(id)
23
- paths = path_escape(id).split(':')
24
- raise "Expecting account:kind:id in role #{id}" unless paths.size >= 3
25
- [ paths[0], 'roles', paths[1], paths[2..-1].join(':') ]
23
+ if id.is_a?(Hash)
24
+ tokens = id['id'].split(':')
25
+ [ id['account'], 'roles', tokens[0], tokens[1..-1].join(':') ]
26
+ elsif id.is_a?(String)
27
+ paths = path_escape(id).split(':')
28
+ raise "Expecting account:kind:id in role #{id}" unless paths.size >= 3
29
+ [ paths[0], 'roles', paths[1], paths[2..-1].join(':') ]
30
+ else
31
+ raise "Unexpected class #{id.class} for #{id}"
32
+ end
26
33
  end
27
34
 
28
35
  def new_from_key(username, api_key)
@@ -1,5 +1,9 @@
1
1
  module Conjur
2
2
  module HasAttributes
3
+ def to_json(options = {})
4
+ attributes
5
+ end
6
+
3
7
  def attributes=(a); @attributes = a; end
4
8
  def attributes
5
9
  return @attributes if @attributes
@@ -1,5 +1,9 @@
1
1
  module Conjur
2
2
  module HasId
3
+ def to_json(options = {})
4
+ { id: id }
5
+ end
6
+
3
7
  def id
4
8
  path_components[-1]
5
9
  end
@@ -1,3 +1,5 @@
1
+ require 'conjur/role_grant'
2
+
1
3
  module Conjur
2
4
  class Role < RestClient::Resource
3
5
  include Exists
@@ -61,8 +63,8 @@ module Conjur
61
63
  end
62
64
 
63
65
  def members
64
- JSON.parse(self["?members"].get(options)).collect do |id|
65
- Role.new(Conjur::Authz::API.host, self.options)[Conjur::API.parse_role_id(id).join('/')]
66
+ JSON.parse(self["?members"].get(options)).collect do |json|
67
+ RoleGrant.parse_from_json(json, self.options)
66
68
  end
67
69
  end
68
70
  end
@@ -0,0 +1,11 @@
1
+ module Conjur
2
+ RoleGrant = Struct.new(:member, :grantor, :admin_option) do
3
+ class << self
4
+ def parse_from_json(json, credentials)
5
+ member = Role.new(Conjur::Authz::API.host, credentials)[Conjur::API.parse_role_id(json['member']).join('/')]
6
+ grantor = Role.new(Conjur::Authz::API.host, credentials)[Conjur::API.parse_role_id(json['grantor']).join('/')]
7
+ RoleGrant.new(member, grantor, json['admin_option'])
8
+ end
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjur-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -178,6 +178,7 @@ files:
178
178
  - lib/conjur/path_based.rb
179
179
  - lib/conjur/resource.rb
180
180
  - lib/conjur/role.rb
181
+ - lib/conjur/role_grant.rb
181
182
  - lib/conjur/secret.rb
182
183
  - lib/conjur/standard_methods.rb
183
184
  - lib/conjur/token_cache.rb
@@ -205,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
206
  version: '0'
206
207
  segments:
207
208
  - 0
208
- hash: 1925645782265443931
209
+ hash: -713472322401587532
209
210
  required_rubygems_version: !ruby/object:Gem::Requirement
210
211
  none: false
211
212
  requirements:
@@ -214,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
215
  version: '0'
215
216
  segments:
216
217
  - 0
217
- hash: 1925645782265443931
218
+ hash: -713472322401587532
218
219
  requirements: []
219
220
  rubyforge_project:
220
221
  rubygems_version: 1.8.24