lexer-identity 0.2.0 → 0.2.1

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: 4aa1b95c2239425aa1f672b4bf0c01b71d95c508
4
- data.tar.gz: e6403c66dc95167a3bf47effe0010fd16809ac4b
3
+ metadata.gz: 70990bc536acb39402aa3585d646cf30e092449b
4
+ data.tar.gz: e806dea0b0c8fd7b87189a193c10ada70b4ec8ea
5
5
  SHA512:
6
- metadata.gz: 08ffdfa2c86c03f7a306f534dfea816ab4652d3bbe51c001c457dbe76a0f9da79a69aabe3171688f1d7adaa0436287275fc1f5677c371bc3ba4078bb7cafa753
7
- data.tar.gz: b376a1ab3a4d4e661a826cc350e4da0cc7d2d201f77a356d99dc5ea54f2d6d8b8f7275df178cfdfe0043a0d2a1f2c85af4df9d563a9523f196b1bbb644028655
6
+ metadata.gz: 81e3545ca200b23118642898bbcc09a186964eda906eef235990cfdd27510780cb1670db61ed43ba770632844cb5904a0c040113d78eca01ff7f46e7298d4ffc
7
+ data.tar.gz: ff1e6ba86f340c722bd6b89d56d003325dfad2410f773e69ecc467a8a2e90866cbecb31d4b9e6d28bba8041ed102f1a2d127db7652f10487121ee2755801ce82
data/README.md CHANGED
@@ -2,10 +2,12 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/lexerdev/identity-gem.svg)](http://travis-ci.org/lexerdev/identity-gem)
4
4
  [![Code Climate](https://codeclimate.com/github/lexerdev/identity-gem/badges/gpa.svg)](https://codeclimate.com/github/lexerdev/identity-gem)
5
+ [![Gem Version](https://badge.fury.io/rb/lexer-identity.svg)](http://badge.fury.io/rb/lexer-identity)
5
6
 
6
7
  Lexer Identity Gem is the official Ruby Client for the [Lexer Identity](https://lexer.io/) API. The
7
8
  Lexer Identity API lets brands contribute and consume from Lexer's Identity database directly from their apps.
8
9
 
10
+
9
11
  ## Installation
10
12
 
11
13
  Add to your Gemfile:
@@ -16,51 +18,23 @@ or install from Rubygems:
16
18
 
17
19
  gem install lexer-identity
18
20
 
21
+ And include it in your project as:
19
22
 
20
- ## Details
21
-
22
- ### Links:
23
-
24
- Have a limited list of keys which can be reviewed at: http://developer.lexer.io/
25
- Your hash should reflect the following format:
26
-
27
- {
28
- email: "joe.smith@mybrand.com",
29
- phone: "61440000000",
30
- twitter: "camplexer"
31
- }
32
-
33
- Multiple values can be provided via arrays:
34
-
35
- {
36
- email: ["joe.smith@mybrand.com", "j.smith@mybrand.com"],
37
- phone: "61440000000",
38
- twitter: "camplexer"
39
- }
40
-
41
- ### Attributes:
42
-
43
- Need to be defined by the valid namespace which should be provided
44
- to you along with your tokens.
45
- An attribute namespace is defined by: `com.brand.*` where `com.brand`
46
- is defined along with your tokens and `*` can be replaced with any
47
- `A-Za-z0-9._-` character.
48
-
49
- Your attribute hash should reflect the following format:
23
+ require 'lexer'
50
24
 
51
- {
52
- "com.brand.email" => "joe.smith@mybrand.com",
53
- "com.brand.phone" => "61440000000",
54
- "com.brand.twitter" => "camplexer"
55
- }
56
25
 
57
- Permitted values include:
26
+ ## Use
58
27
 
59
- - String
60
- - Numbers
61
- - Arrays
62
- - Simple Hashes
28
+ # Configure using the provided tokens
29
+ Lexer::Identity.configure do |config|
30
+ config.api_token = "..."
31
+ config.contributor_token = "..."
32
+ config.consumer_token = "..."
33
+ end
34
+
35
+ # Communicate via the enrich method
36
+ Lexer::Identity.enrich( links: { email: "test@lexer.io", twitter: "camplexer" }, attributes: { "io.lexer.name": { value: "Jane Smith", confidence: Lexer::Identity::CONFIDENCE_PROVIDED, ... } )
63
37
 
64
- Attribute hashes are transported via JSON so any format supported
65
- by JSON is supported by Lexer.
38
+ ## Further Reading
66
39
 
40
+ See the full documentation at http://developer.lexer.io.
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.licenses = ['MIT']
10
10
  s.authors = ['Aaron Wallis']
11
11
  s.email = 'code@Lexer.io'
12
- s.homepage = 'https://github.com/lexerdev/lexer-identity-api.gem'
12
+ s.homepage = 'https://github.com/lexerdev/identity-gem'
13
13
  s.summary = 'Lexer Identity API Client'
14
14
  s.description = 'Consume and Contribute Identity data from your Ruby applications.'
15
15
 
@@ -59,15 +59,16 @@ module Lexer
59
59
 
60
60
  private
61
61
 
62
- def self.validate_attributes attributes
63
- attributes.each { |k, v|
62
+ def self.validate_attributes(attributes)
63
+ attributes.each do |k, v|
64
64
  unless v.is_a? Hash
65
65
  fail Lexer::Identity::AttributePayloadError, "#{k} is not a hash"
66
66
  end
67
- unless v.has_key?(:value) && v.has_key?(:confidence)
67
+
68
+ unless [:value, :confidence].all? { |required_key| v.key?(required_key) || v.key?(required_key.to_s) }
68
69
  fail Lexer::Identity::AttributePayloadError, "#{k} has an invalid payload"
69
70
  end
70
- }
71
+ end
71
72
  end
72
73
 
73
74
  def self.post_request(body)
@@ -4,6 +4,6 @@
4
4
  module Lexer
5
5
  # :nordoc:
6
6
  module Identity
7
- VERSION = '0.2.0'
7
+ VERSION = '0.2.1'
8
8
  end
9
9
  end
@@ -114,6 +114,33 @@ describe Lexer::Identity do
114
114
  )
115
115
  end.must_raise Lexer::Identity::AttributePayloadError
116
116
  end
117
+ it 'accepts symbols or string keys' do
118
+ stub_request(:post, 'https://identity.lexer.io/identity').
119
+ with(body: '{"id":"0a224111-ac64-4142-9198-adf8bf2c1a04","attributes":{"com.brand.car":{"value":"Tesla","confidence":2}},"api_token":"abc-123","contributor_token":"bcd-234"}', headers: { 'Content-Type' => 'application/json' }).
120
+ to_return(status: 200, body: '{"id":"0a224111-ac64-4142-9198-adf8bf2c1a04"}')
121
+
122
+ Lexer::Identity.enrich(
123
+ id: '0a224111-ac64-4142-9198-adf8bf2c1a04',
124
+ attributes: {
125
+ 'com.brand.car' => {
126
+ value: 'Tesla',
127
+ confidence: Lexer::Identity::CONFIDENCE_PROVIDED
128
+ }
129
+ }
130
+ )
131
+
132
+ Lexer::Identity.enrich(
133
+ id: '0a224111-ac64-4142-9198-adf8bf2c1a04',
134
+ attributes: {
135
+ 'com.brand.car' => {
136
+ 'value' => 'Tesla',
137
+ 'confidence' => Lexer::Identity::CONFIDENCE_PROVIDED
138
+ }
139
+ }
140
+ )
141
+
142
+ assert_requested(:post, 'https://identity.lexer.io/identity', times: 2)
143
+ end
117
144
  it 'allows a complete payload' do
118
145
  stub_request(:post, 'https://identity.lexer.io/identity').
119
146
  with(body: '{"id":"0a224111-ac64-4142-9198-adf8bf2c1a04","attributes":{"com.brand.car":{"value":"Tesla","confidence":2}},"api_token":"abc-123","contributor_token":"bcd-234"}', headers: { 'Content-Type' => 'application/json' }).
@@ -129,6 +156,26 @@ describe Lexer::Identity do
129
156
  }
130
157
  )
131
158
 
159
+ assert_requested(:post, 'https://identity.lexer.io/identity', times: 1)
160
+ end
161
+ it 'allows a metadata payload' do
162
+ stub_request(:post, 'https://identity.lexer.io/identity').
163
+ with(body: '{"id":"0a224111-ac64-4142-9198-adf8bf2c1a04","attributes":{"com.brand.car":{"value":"Tesla","confidence":2,"metadata":{"extra":"data"}}},"api_token":"abc-123","contributor_token":"bcd-234"}', headers: { 'Content-Type' => 'application/json' }).
164
+ to_return(status: 200, body: '{"id":"0a224111-ac64-4142-9198-adf8bf2c1a04"}')
165
+
166
+ Lexer::Identity.enrich(
167
+ id: '0a224111-ac64-4142-9198-adf8bf2c1a04',
168
+ attributes: {
169
+ 'com.brand.car' => {
170
+ value: 'Tesla',
171
+ confidence: Lexer::Identity::CONFIDENCE_PROVIDED,
172
+ metadata: {
173
+ extra: "data"
174
+ }
175
+ }
176
+ }
177
+ )
178
+
132
179
  assert_requested(:post, 'https://identity.lexer.io/identity', times: 1)
133
180
  end
134
181
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lexer-identity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Wallis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-09 00:00:00.000000000 Z
11
+ date: 2015-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -48,7 +48,7 @@ files:
48
48
  - spec/lexer/identity/configuration_spec.rb
49
49
  - spec/lexer/identity_spec.rb
50
50
  - spec/spec_helper.rb
51
- homepage: https://github.com/lexerdev/lexer-identity-api.gem
51
+ homepage: https://github.com/lexerdev/identity-gem
52
52
  licenses:
53
53
  - MIT
54
54
  metadata: {}