conjur-api 2.1.4 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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