soar-registry-staff 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f544b6dad6e1d457e519a2224be548670b5246ac
4
- data.tar.gz: c2d23d9e7ca7d1054494eaa8a1f7592cad6fe4e9
3
+ metadata.gz: b870c2449a793ab6ce47a3b265be8eecd6f7d688
4
+ data.tar.gz: dcab46f89e3425a949580f83a78f00ab240953fc
5
5
  SHA512:
6
- metadata.gz: 07dc861ee7813b76348ec62e22303bed71f0e3b6b4cd6bdf9662f2b333b61eb9dd72645c656a2325d4353dc9d333d0c652307e47d9bd6811d1ed0bbda8aa0fd2
7
- data.tar.gz: 5e5845c4717996db03667913cab21840ceabde5dc338b906eacaf78784b56faa19a35de10307dbb77aaa08563ecd4932d4ebcdfc0ad5a70640d420b5b5f06e04
6
+ metadata.gz: 152fa38f09839258442d7e73b4f2a18124786d40f8770d4bc174c690e8efeb20afc386eca7851d4d2e92cf5e5eef4aaa2514edf4749ca63f334cbecca626b13e
7
+ data.tar.gz: d8f7afdcbdf5607a9997d58a3b539e39e04a99afe144d5adaa0f4d9da5a8500b598147af83b458e4a05a05a17e0c8af477b48fde474620087755a73ce4b51c11
data/README.md CHANGED
@@ -23,21 +23,24 @@ provider:
23
23
 
24
24
  ### Create an instance of the staff identity registry
25
25
  ```ruby
26
+ require 'soar/registry/staff/identity'
26
27
  @idr = Soar::Registry::Staff::Identity.new(configuration)
27
28
  ```
28
29
 
29
30
  ### Getting a list of identifiers
30
31
  ```ruby
31
- > identifiers = @idr.get_identifiers( {"email" => "admin@hetzner.co.za"} )
32
- > identifiers = @idr.get_identifiers( {"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"} )
32
+ > identifiers = @idr.get_identifiers("identity-820d5660-2204-4f7d-8c04-746313439b81")
33
+ > identifiers = @idr.get_identifiers({"email" => "admin@hetzner.co.za"}.to_json)
34
+ > identifiers = @idr.get_identifiers({"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"}.to_json)
33
35
  > puts identifiers.inspect
34
36
  ["admin@hetzner.co.za", "identity-820d5660-2204-4f7d-8c04-746313439b81"]
35
37
  ```
36
38
 
37
39
  ### Getting a list of roles
38
40
  ```ruby
39
- > roles = @idr.get_roles( {"email" => "admin@hetzner.co.za"} )
40
- > roles = @idr.get_roles( {"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"} )
41
+ > roles = @idr.get_roles("identity-820d5660-2204-4f7d-8c04-746313439b81")
42
+ > roles = @idr.get_roles({"email" => "admin@hetzner.co.za"}.to_json)
43
+ > roles = @idr.get_roles({"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"}.to_json)
41
44
  > puts roles.inspect
42
45
  ["staff", "configuration_publisher", "configuration_consumer"]
43
46
  ```
@@ -45,8 +48,9 @@ provider:
45
48
  ### Getting a hash of attributes for a role
46
49
  ```ruby
47
50
  > role = 'staff'
48
- > attributes = @idr.get_attributes( {"email" => "admin@hetzner.co.za"}, role)
49
- > attributes = @idr.get_attributes( {"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"}, role )
51
+ > attributes = @idr.get_attributes("identity-820d5660-2204-4f7d-8c04-746313439b81", role)
52
+ > attributes = @idr.get_attributes({"email" => "admin@hetzner.co.za"}.to_json, role)
53
+ > attributes = @idr.get_attributes({"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"}.to_json, role)
50
54
  > puts attributes.inspect
51
55
  {
52
56
  "staff": {
@@ -58,8 +62,9 @@ provider:
58
62
 
59
63
  ### Getting a hash of all attributes
60
64
  ```ruby
61
- > attributes = @idr.get_attributes( {"email" => "admin@hetzner.co.za"} )
62
- > attributes = @idr.get_attributes( {"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"} )
65
+ > attributes = @idr.get_attributes("identity-820d5660-2204-4f7d-8c04-746313439b81")
66
+ > attributes = @idr.get_attributes({"email" => "admin@hetzner.co.za"}.to_json)
67
+ > attributes = @idr.get_attributes({"identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81"}.to_json)
63
68
  > puts attributes.inspect
64
69
  {
65
70
  "identity_id" => "identity-820d5660-2204-4f7d-8c04-746313439b81",
@@ -0,0 +1,40 @@
1
+ require 'soar/registry/staff/identifier/id'
2
+ require 'soar/registry/staff/identifier/hash'
3
+
4
+ module Soar
5
+ module Registry
6
+ module Staff
7
+ module Identifier
8
+ class Factory
9
+
10
+ ##
11
+ # @param [String] identifier_id or a json serialized hash with length 1 eg. '{"email":"test@example.com"}'
12
+ # @return [Soar::Registry::Staff::Identifier::Id|Soar::Registry::Staff::Identifier::Hash] identifier
13
+ ##
14
+ def get_identifier(identifier)
15
+ if is_json?(identifier)
16
+ return Soar::Registry::Staff::Identifier::Hash.new(identifier)
17
+ else
18
+ return Soar::Registry::Staff::Identifier::Id.new(identifier)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def is_json?(identifier)
25
+ begin
26
+ return JSON.parse(identifier)
27
+ return true
28
+ rescue JSON::ParserError => e
29
+ return false
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+
@@ -0,0 +1,24 @@
1
+ module Soar
2
+ module Registry
3
+ module Staff
4
+ module Identifier
5
+ class Hash
6
+
7
+ class MultipleIdentifierTypesError < StandardError; end;
8
+
9
+ attr_reader :type
10
+ attr_reader :value
11
+
12
+ def initialize(identifier)
13
+ identifier = JSON.parse(identifier)
14
+ raise MultipleIdentifierTypesError, 'Multiple identifier types are not allowed' if identifier.length > 1
15
+ @type = identifier.keys[0]
16
+ @value = identifier[identifier.keys[0]]
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,18 @@
1
+ module Soar
2
+ module Registry
3
+ module Staff
4
+ module Identifier
5
+ class Id
6
+
7
+ attr_reader :value
8
+
9
+ def initialize(identifier)
10
+ @value = identifier.strip
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -1,6 +1,7 @@
1
1
  require 'soar_idm/soar_idm'
2
2
  require 'soar/registry/staff/translator/dynamo_db'
3
3
  require 'soar/registry/staff/directory/dynamo_db/identity'
4
+ require 'soar/registry/staff/identifier/factory'
4
5
 
5
6
  module Soar
6
7
  module Registry
@@ -76,15 +77,16 @@ module Soar
76
77
  end
77
78
 
78
79
  ##
79
- # @param [String|Hash] identity_id or identifier (a hash containing attribute name and attribute value)
80
- # @return [Array]
80
+ # @param [String] identifier primary key (identity_id) or a json serialized hash with length 1 eg. '{"email":"test@example.com"}'
81
+ # @return [Hash] an identity
81
82
  def calculate_identities(identifier)
82
- if @translator.is_json?(identifier)
83
- identifier = @translator.get_identifier(identifier)
84
- entries = @directory.search_identities(identifier.keys[0], identifier[identifier.keys[0]] )
85
- return [@translator.get_identity(entries)[0]]
83
+ identifier_factory = Soar::Registry::Staff::Identifier::Factory.new
84
+ identifier = identifier_factory.get_identifier(identifier)
85
+ if identifier.is_a?(Soar::Registry::Staff::Identifier::Id)
86
+ return [@translator.get_identity(@directory.fetch_identity(identifier.value))]
86
87
  end
87
- return [@translator.get_identity(@directory.fetch_identity(identifier))]
88
+ entries = @directory.search_identities(identifier.type, identifier.value )
89
+ return [@translator.get_identity(entries)[0]]
88
90
  end
89
91
 
90
92
  end
@@ -12,15 +12,6 @@ module Soar
12
12
  return entry
13
13
  end
14
14
 
15
- def is_json?(json)
16
- begin
17
- JSON.parse(json)
18
- return true
19
- rescue JSON::ParserError => e
20
- return false
21
- end
22
- end
23
-
24
15
  ##
25
16
  # @param [Array] entries a list of entries from data source
26
17
  # @return [Array] identities a list of identities
@@ -29,13 +20,6 @@ module Soar
29
20
  return entries
30
21
  end
31
22
 
32
- ##
33
- # @param [String|Hash] identifier could be a json string or a ruby hash
34
- # @return [Hash] identifier with identifying attribute key and attribute value
35
- ##
36
- def get_identifier(identifier)
37
- identifier.is_a?(Hash) ? identifier : JSON.parse(identifier)
38
- end
39
23
  end
40
24
  end
41
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soar-registry-staff
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
  - Charles Mulder
@@ -94,6 +94,9 @@ files:
94
94
  - lib/soar/registry/staff/directory/dynamo_db/base.rb
95
95
  - lib/soar/registry/staff/directory/dynamo_db/identity.rb
96
96
  - lib/soar/registry/staff/directory/error.rb
97
+ - lib/soar/registry/staff/identifier/factory.rb
98
+ - lib/soar/registry/staff/identifier/hash.rb
99
+ - lib/soar/registry/staff/identifier/id.rb
97
100
  - lib/soar/registry/staff/identity.rb
98
101
  - lib/soar/registry/staff/translator/dynamo_db.rb
99
102
  homepage: https://gitlab.host-h.net/registries/staff