cognito-client 0.4.1 → 0.5.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -1
  3. data/Gemfile +37 -0
  4. data/Guardfile +4 -0
  5. data/README.md +55 -18
  6. data/Rakefile +3 -5
  7. data/bin/console +1 -1
  8. data/circle.yml +7 -0
  9. data/cognito.gemspec +4 -6
  10. data/config/devtools.yml +2 -0
  11. data/config/errors.yml +2 -0
  12. data/config/flay.yml +5 -0
  13. data/config/flog.yml +5 -0
  14. data/config/mutant.yml +6 -0
  15. data/config/reek.yml +111 -0
  16. data/config/rubocop.yml +91 -0
  17. data/config/yardstick.yml +2 -0
  18. data/lib/cognito/client.rb +59 -96
  19. data/lib/cognito/client/command.rb +34 -0
  20. data/lib/cognito/client/commands/create_identity.rb +22 -0
  21. data/lib/cognito/client/commands/create_identity_assessment.rb +26 -0
  22. data/lib/cognito/client/commands/create_identity_search.rb +37 -0
  23. data/lib/cognito/client/commands/create_profile.rb +24 -0
  24. data/lib/cognito/client/commands/mixins/create_behavior.rb +20 -0
  25. data/lib/cognito/client/commands/retrieve_identity_location.rb +28 -0
  26. data/lib/cognito/client/commands/retrieve_identity_search_job.rb +40 -0
  27. data/lib/cognito/client/connection.rb +36 -0
  28. data/lib/cognito/client/document.rb +32 -0
  29. data/lib/cognito/client/params.rb +13 -0
  30. data/lib/cognito/client/params/identity.rb +48 -0
  31. data/lib/cognito/client/params/identity_assessment.rb +23 -0
  32. data/lib/cognito/client/params/identity_search.rb +25 -0
  33. data/lib/cognito/client/params/omitted.rb +9 -0
  34. data/lib/cognito/client/request.rb +98 -0
  35. data/lib/cognito/client/resource.rb +124 -0
  36. data/lib/cognito/client/resource/identity_assessment.rb +53 -0
  37. data/lib/cognito/client/resource/identity_search.rb +64 -0
  38. data/lib/cognito/client/resource/identity_search_job.rb +12 -0
  39. data/lib/cognito/client/resource/profile.rb +10 -0
  40. data/lib/cognito/client/resource_identifier.rb +17 -0
  41. data/lib/cognito/client/response.rb +17 -0
  42. data/lib/cognito/client/response/builder.rb +48 -0
  43. data/lib/cognito/client/response/identity_assessment.rb +10 -0
  44. data/lib/cognito/client/response/identity_search.rb +32 -0
  45. data/lib/cognito/client/response/identity_search_job.rb +20 -0
  46. data/lib/cognito/client/response/profile.rb +10 -0
  47. data/lib/cognito/version.rb +3 -3
  48. metadata +77 -83
  49. data/.rubocop.yml +0 -57
  50. data/.travis.yml +0 -4
  51. data/lib/cognito.rb +0 -32
  52. data/lib/cognito/cleaner.rb +0 -30
  53. data/lib/cognito/constants.rb +0 -8
  54. data/lib/cognito/document.rb +0 -33
  55. data/lib/cognito/error.rb +0 -8
  56. data/lib/cognito/notary.rb +0 -56
  57. data/lib/cognito/resource.rb +0 -129
  58. data/lib/cognito/resource/identity_assessment.rb +0 -40
  59. data/lib/cognito/resource/identity_search.rb +0 -63
  60. data/lib/cognito/resource/identity_search_job.rb +0 -11
  61. data/lib/cognito/resource/profile.rb +0 -9
  62. data/lib/cognito/responder.rb +0 -61
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ class Cognito
3
+ class Client
4
+ class Resource
5
+ class IdentitySearchJob < self
6
+ register_type :identity_search_job
7
+
8
+ attribute :status
9
+ end # IdentitySearchJob
10
+ end # Resource
11
+ end # Client
12
+ end # Cognito
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ class Cognito
3
+ class Client
4
+ class Resource
5
+ class Profile < self
6
+ register_type :profile
7
+ end # Profile
8
+ end # Resource
9
+ end # Client
10
+ end # Cognito
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class ResourceIdentifier
6
+ include Procto.call(:to_h), Anima.new(:id, :type, :attributes, :relationships)
7
+
8
+ def initialize(relationships: nil, **options)
9
+ super
10
+ end
11
+
12
+ def to_h
13
+ { type: type, id: id }
14
+ end
15
+ end # ResourceIdentifier
16
+ end # Client
17
+ end # Cognito
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class Response
6
+ include Anima.new(:status, :headers, :data, :connection)
7
+
8
+ def self.build(response, connection)
9
+ new(Builder.call(response).merge(connection: connection))
10
+ end
11
+
12
+ class Status
13
+ include Anima.new(:code, :reason)
14
+ end # Status
15
+ end # Response
16
+ end # Client
17
+ end # Cognito
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class Response
6
+ class Builder
7
+ include Concord.new(:response), Procto.call(:to_h), Adamantium
8
+
9
+ def to_h
10
+ {
11
+ status: build_status,
12
+ headers: response.headers.to_hash,
13
+ data: build_data
14
+ }
15
+ end
16
+
17
+ private
18
+
19
+ def build_data
20
+ return if response.body.empty?
21
+
22
+ resource_class.build(document.data, document)
23
+ end
24
+
25
+ def build_status
26
+ Status.new(
27
+ code: response.code,
28
+ reason: response.reason
29
+ )
30
+ end
31
+
32
+ def resource_class
33
+ data = parsed_response.fetch(:data)
34
+ Resource::REGISTRY.lookup(data.fetch(:type).to_sym)
35
+ end
36
+
37
+ def document
38
+ Document.new(parsed_response)
39
+ end
40
+
41
+ def parsed_response
42
+ JSON.parse(response, symbolize_names: true)
43
+ end
44
+ memoize :parsed_response
45
+ end # Builder
46
+ end # Response
47
+ end # Client
48
+ end # Cognito
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class Response
6
+ class IdentityAssessment < self
7
+ end # IdentityAssessment
8
+ end # Response
9
+ end # Client
10
+ end # Cognito
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class Response
6
+ class IdentitySearch < self
7
+ def create_assessment(attributes = {})
8
+ Command::CreateIdentityAssessment.call(
9
+ attributes.merge(
10
+ connection: connection,
11
+ identity_search_identifier: identifier
12
+ )
13
+ )
14
+ end
15
+
16
+ def processing?
17
+ false
18
+ end
19
+
20
+ private
21
+
22
+ def identifier
23
+ ResourceIdentifier.call(data_without_parent)
24
+ end
25
+
26
+ def data_without_parent
27
+ data.to_h.reject { |key| key.equal?(:parent) }
28
+ end
29
+ end # IdentitySearch
30
+ end # Response
31
+ end # Client
32
+ end # Cognito
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class Response
6
+ class IdentitySearchJob < self
7
+ def get
8
+ Command::RetrieveIdentitySearchJob.call(
9
+ connection,
10
+ headers.fetch('Content-Location')
11
+ )
12
+ end
13
+
14
+ def processing?
15
+ true
16
+ end
17
+ end # IdentitySearchJob
18
+ end # Response
19
+ end # Client
20
+ end # Cognito
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Cognito
4
+ class Client
5
+ class Response
6
+ class Profile < self
7
+ end # Profile
8
+ end # Response
9
+ end # Client
10
+ end # Cognito
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
- module Cognito
3
- VERSION = '0.4.1'
4
- end
2
+ class Cognito
3
+ VERSION = '0.5.0'
4
+ end # Cognito
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cognito-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connor Jacobsen
@@ -39,159 +39,129 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.10'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '11.2'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '11.2'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.5'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.5'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.41'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.41'
83
- - !ruby/object:Gem::Dependency
84
- name: timecop
42
+ name: abstract_type
85
43
  requirement: !ruby/object:Gem::Requirement
86
44
  requirements:
87
45
  - - "~>"
88
46
  - !ruby/object:Gem::Version
89
- version: '0.8'
90
- type: :development
47
+ version: 0.0.7
48
+ type: :runtime
91
49
  prerelease: false
92
50
  version_requirements: !ruby/object:Gem::Requirement
93
51
  requirements:
94
52
  - - "~>"
95
53
  - !ruby/object:Gem::Version
96
- version: '0.8'
54
+ version: 0.0.7
97
55
  - !ruby/object:Gem::Dependency
98
- name: rspec-its
56
+ name: adamantium
99
57
  requirement: !ruby/object:Gem::Requirement
100
58
  requirements:
101
59
  - - "~>"
102
60
  - !ruby/object:Gem::Version
103
- version: 1.2.0
104
- type: :development
61
+ version: 0.2.0
62
+ type: :runtime
105
63
  prerelease: false
106
64
  version_requirements: !ruby/object:Gem::Requirement
107
65
  requirements:
108
66
  - - "~>"
109
67
  - !ruby/object:Gem::Version
110
- version: 1.2.0
68
+ version: 0.2.0
111
69
  - !ruby/object:Gem::Dependency
112
- name: abstract_type
70
+ name: anima
113
71
  requirement: !ruby/object:Gem::Requirement
114
72
  requirements:
115
73
  - - "~>"
116
74
  - !ruby/object:Gem::Version
117
- version: 0.0.7
75
+ version: 0.3.0
118
76
  type: :runtime
119
77
  prerelease: false
120
78
  version_requirements: !ruby/object:Gem::Requirement
121
79
  requirements:
122
80
  - - "~>"
123
81
  - !ruby/object:Gem::Version
124
- version: 0.0.7
82
+ version: 0.3.0
125
83
  - !ruby/object:Gem::Dependency
126
- name: adamantium
84
+ name: concord
127
85
  requirement: !ruby/object:Gem::Requirement
128
86
  requirements:
129
87
  - - "~>"
130
88
  - !ruby/object:Gem::Version
131
- version: 0.2.0
89
+ version: 0.1.5
132
90
  type: :runtime
133
91
  prerelease: false
134
92
  version_requirements: !ruby/object:Gem::Requirement
135
93
  requirements:
136
94
  - - "~>"
137
95
  - !ruby/object:Gem::Version
138
- version: 0.2.0
96
+ version: 0.1.5
139
97
  - !ruby/object:Gem::Dependency
140
- name: anima
98
+ name: procto
141
99
  requirement: !ruby/object:Gem::Requirement
142
100
  requirements:
143
101
  - - "~>"
144
102
  - !ruby/object:Gem::Version
145
- version: 0.3.0
103
+ version: 0.0.3
146
104
  type: :runtime
147
105
  prerelease: false
148
106
  version_requirements: !ruby/object:Gem::Requirement
149
107
  requirements:
150
108
  - - "~>"
151
109
  - !ruby/object:Gem::Version
152
- version: 0.3.0
110
+ version: 0.0.3
153
111
  - !ruby/object:Gem::Dependency
154
- name: concord
112
+ name: ice_nine
155
113
  requirement: !ruby/object:Gem::Requirement
156
114
  requirements:
157
115
  - - "~>"
158
116
  - !ruby/object:Gem::Version
159
- version: 0.1.5
117
+ version: 0.11.2
160
118
  type: :runtime
161
119
  prerelease: false
162
120
  version_requirements: !ruby/object:Gem::Requirement
163
121
  requirements:
164
122
  - - "~>"
165
123
  - !ruby/object:Gem::Version
166
- version: 0.1.5
124
+ version: 0.11.2
167
125
  - !ruby/object:Gem::Dependency
168
- name: httparty
126
+ name: http
169
127
  requirement: !ruby/object:Gem::Requirement
170
128
  requirements:
171
129
  - - "~>"
172
130
  - !ruby/object:Gem::Version
173
- version: '0.13'
131
+ version: '2.0'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 2.0.3
174
135
  type: :runtime
175
136
  prerelease: false
176
137
  version_requirements: !ruby/object:Gem::Requirement
177
138
  requirements:
178
139
  - - "~>"
179
140
  - !ruby/object:Gem::Version
180
- version: '0.13'
141
+ version: '2.0'
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 2.0.3
181
145
  - !ruby/object:Gem::Dependency
182
- name: procto
146
+ name: addressable
183
147
  requirement: !ruby/object:Gem::Requirement
184
148
  requirements:
185
149
  - - "~>"
186
150
  - !ruby/object:Gem::Version
187
- version: 0.0.3
151
+ version: '2.4'
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 2.4.0
188
155
  type: :runtime
189
156
  prerelease: false
190
157
  version_requirements: !ruby/object:Gem::Requirement
191
158
  requirements:
192
159
  - - "~>"
193
160
  - !ruby/object:Gem::Version
194
- version: 0.0.3
161
+ version: '2.4'
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: 2.4.0
195
165
  description:
196
166
  email:
197
167
  - connor@opendoor.com
@@ -201,28 +171,52 @@ extra_rdoc_files: []
201
171
  files:
202
172
  - ".gitignore"
203
173
  - ".rspec"
204
- - ".rubocop.yml"
205
- - ".travis.yml"
206
174
  - Gemfile
175
+ - Guardfile
207
176
  - LICENSE.txt
208
177
  - README.md
209
178
  - Rakefile
210
179
  - bin/console
211
180
  - bin/setup
181
+ - circle.yml
212
182
  - cognito.gemspec
213
- - lib/cognito.rb
214
- - lib/cognito/cleaner.rb
183
+ - config/devtools.yml
184
+ - config/errors.yml
185
+ - config/flay.yml
186
+ - config/flog.yml
187
+ - config/mutant.yml
188
+ - config/reek.yml
189
+ - config/rubocop.yml
190
+ - config/yardstick.yml
215
191
  - lib/cognito/client.rb
216
- - lib/cognito/constants.rb
217
- - lib/cognito/document.rb
218
- - lib/cognito/error.rb
219
- - lib/cognito/notary.rb
220
- - lib/cognito/resource.rb
221
- - lib/cognito/resource/identity_assessment.rb
222
- - lib/cognito/resource/identity_search.rb
223
- - lib/cognito/resource/identity_search_job.rb
224
- - lib/cognito/resource/profile.rb
225
- - lib/cognito/responder.rb
192
+ - lib/cognito/client/command.rb
193
+ - lib/cognito/client/commands/create_identity.rb
194
+ - lib/cognito/client/commands/create_identity_assessment.rb
195
+ - lib/cognito/client/commands/create_identity_search.rb
196
+ - lib/cognito/client/commands/create_profile.rb
197
+ - lib/cognito/client/commands/mixins/create_behavior.rb
198
+ - lib/cognito/client/commands/retrieve_identity_location.rb
199
+ - lib/cognito/client/commands/retrieve_identity_search_job.rb
200
+ - lib/cognito/client/connection.rb
201
+ - lib/cognito/client/document.rb
202
+ - lib/cognito/client/params.rb
203
+ - lib/cognito/client/params/identity.rb
204
+ - lib/cognito/client/params/identity_assessment.rb
205
+ - lib/cognito/client/params/identity_search.rb
206
+ - lib/cognito/client/params/omitted.rb
207
+ - lib/cognito/client/request.rb
208
+ - lib/cognito/client/resource.rb
209
+ - lib/cognito/client/resource/identity_assessment.rb
210
+ - lib/cognito/client/resource/identity_search.rb
211
+ - lib/cognito/client/resource/identity_search_job.rb
212
+ - lib/cognito/client/resource/profile.rb
213
+ - lib/cognito/client/resource_identifier.rb
214
+ - lib/cognito/client/response.rb
215
+ - lib/cognito/client/response/builder.rb
216
+ - lib/cognito/client/response/identity_assessment.rb
217
+ - lib/cognito/client/response/identity_search.rb
218
+ - lib/cognito/client/response/identity_search_job.rb
219
+ - lib/cognito/client/response/profile.rb
226
220
  - lib/cognito/version.rb
227
221
  homepage: https://github.com/opendoor-labs/cognito
228
222
  licenses: