lexis_nexis_instant_authenticate 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58bac522de7697470c2f746d37aa495af96492aa
4
- data.tar.gz: 185f3d23eea9bf0c067a7c368e8e3f8798aa323b
3
+ metadata.gz: 1f834cd2390d9348140a92b6960b9f926baedd77
4
+ data.tar.gz: 68dcf36491121bda5f794bf97e4e18a8532d0028
5
5
  SHA512:
6
- metadata.gz: f8252f66d9a9f98b056530a08c97075ff8e9c749e0229e0a702ce81c4975b2d69b3a86d6c06c162766e8d0b1a9edd50234d79fcab320525efb32b57b5bdd41d1
7
- data.tar.gz: e468a625900ec07041194ce9996c0d9bdc6c3636963cc9e4f69048eef8a6d4c9f842355caf777bebe53aa338025358b81a9f31a06761565da71bca8788e593cc
6
+ metadata.gz: 6cf1184ab5c38bc05b84f699e130e3f553263089950ee17f385b32f67b52e03944a4c5655f35b2d717d6049ddcfffa5eee2d4197576e4ca3f2cea3bc2041717c
7
+ data.tar.gz: ab250dfda90dc25574f51c3cc149b4b5cff16c3d403de6f0515ed576f6c2bf9f613f03e9e8abd51307a78aa186d87687294c01df663ef9d6c36340ad5763a96e
@@ -0,0 +1,7 @@
1
+ #CHANGELOG
2
+
3
+ ## 0.3.0 - June 28, 2016
4
+
5
+ - Removed dependency on ActiveSupport.
6
+ - Added fault tolerant dig method for irregular responses.
7
+ - Switched debug logging to use global Savon debugger.
data/README.md CHANGED
@@ -47,8 +47,30 @@ Response will have:
47
47
  * `response.id`
48
48
  * `response.transaction_id`
49
49
 
50
+ ###Scoring Responses
51
+ The `score_quiz` method expects the following arguments:
52
+ * `transaction_id` This is the GUID that you called the `create_quiz` method with or the GUID that was generated for you.
53
+ * `responses` This is an array of hashes in the form of `{question_id: 1234, choice_id: 4321}`
50
54
 
55
+ ```ruby
56
+ response = @client.score_quiz(transaction_id, Array(@responses).map(&:with_indifferent_access))
57
+ if response.success? && response.pass?
58
+ return true
59
+ else
60
+ return response.status
61
+ end
62
+ ```
63
+
64
+ Response will have:
65
+ * `response.success?`
66
+ * `response.pass?`
67
+ * `response.score`
68
+ * `response.proofing_response`
51
69
 
70
+ ## To-Do
71
+ * Write Tests
72
+ * Transition to actual WSDL from LN.
73
+ * Refactor `Response` Object.
52
74
 
53
75
  ## Development
54
76
 
@@ -56,6 +78,7 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
56
78
 
57
79
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
58
80
 
81
+
59
82
  ## Contributing
60
83
 
61
84
  Bug reports and pull requests are welcome on GitHub at https://github.com/RepPro/lexis_nexis_instant_authenticate.
@@ -19,6 +19,7 @@ module LexisNexisInstantAuthenticate
19
19
  config.env_namespace :soapenv
20
20
  config.raise_errors @options[:production]
21
21
  config.log !@options[:production]
22
+ config.log_level @options[:log_level] || :warn
22
23
  config.namespace_identifier "ws"
23
24
 
24
25
  config.wsse_auth(@options[:username], @options[:password], :digest)
@@ -53,10 +54,23 @@ module LexisNexisInstantAuthenticate
53
54
  savon.build_request(:invoke_identity_service)
54
55
  end
55
56
 
57
+ def debug?
58
+ savon.globals[:logger].debug?
59
+ end
60
+
56
61
  def call_service(request_body, locals = {})
57
62
  request = build_request
58
63
  request.body = request_body
64
+ if debug?
65
+ savon.globals[:logger].debug request.body
66
+ end
59
67
  response = Savon::Response.new(HTTPI.post(request), savon.globals, locals)
68
+ if response.http_error
69
+ fail "Bad HTTP response: #{response.http_error}"
70
+ end
71
+ if debug?
72
+ savon.globals[:logger].debug response.hash.pretty_inspect
73
+ end
60
74
  response
61
75
  end
62
76
 
@@ -31,8 +31,18 @@ module LexisNexisInstantAuthenticate
31
31
  }
32
32
  end
33
33
 
34
+ def camelize(term)
35
+ term.to_s.split('_').each_with_index.map do |w,idx|
36
+ if idx == 0
37
+ next w
38
+ else
39
+ next w.capitalize
40
+ end
41
+ end.join()
42
+ end
43
+
34
44
  def to_xml
35
- Gyoku.xml(request_body, key_converter: -> key { [NAMESPACE, key.camelize(:lower)].join(':') })
45
+ Gyoku.xml(request_body, key_converter: -> key { [NAMESPACE, camelize(key)].join(':') })
36
46
  end
37
47
 
38
48
  def request_body
@@ -50,4 +60,4 @@ module LexisNexisInstantAuthenticate
50
60
 
51
61
  end
52
62
  end
53
- end
63
+ end
@@ -15,7 +15,9 @@ module LexisNexisInstantAuthenticate
15
15
  age: nil_to_string(age),
16
16
  gender: nil_to_string(gender),
17
17
  ssn: nil_to_string(ssn),
18
- address: nil_to_string(address)
18
+ address: nil_to_string(address),
19
+ email: nil_to_string(email),
20
+ license: nil_to_string(drivers_license)
19
21
  }
20
22
  }
21
23
  }
@@ -23,7 +25,7 @@ module LexisNexisInstantAuthenticate
23
25
 
24
26
  private
25
27
  def name
26
- {prefix: "", first: @person[:first_name], middle: @person[:middle_name], last: @person[:last_name], suffix: ""}
28
+ {prefix: @person[:prefix], first: @person[:first_name], middle: @person[:middle_name], last: @person[:last_name], suffix: @person[:suffix]}
27
29
  end
28
30
 
29
31
  def date_of_birth
@@ -54,7 +56,18 @@ module LexisNexisInstantAuthenticate
54
56
  }
55
57
  end
56
58
 
59
+ def email
60
+ @person[:email]
61
+ end
57
62
 
63
+ def drivers_license
64
+ return "" unless @person[:drivers_license].present?
65
+ {
66
+ :@type => 'DRIVERS_LICENSE',
67
+ license_number: @person[:drivers_license][:number],
68
+ issuer: @person[:drivers_license][:state]
69
+ }
70
+ end
58
71
  end
59
72
  end
60
- end
73
+ end
@@ -12,7 +12,7 @@ module LexisNexisInstantAuthenticate
12
12
  end
13
13
 
14
14
  def proofing_response
15
- @response.hash[:envelope][:body][:invoke_identity_service_response][:identity_proofing_response]
15
+ h_dig(@response.hash, :envelope, :body, :invoke_identity_service_response, :identity_proofing_response)
16
16
  end
17
17
 
18
18
  def success?
@@ -23,11 +23,17 @@ module LexisNexisInstantAuthenticate
23
23
  end
24
24
 
25
25
  def status
26
- proofing_response[:status]
26
+ h_dig(proofing_response, :status)
27
27
  end
28
28
 
29
29
  def product_response
30
- proofing_response[:product_response]
30
+ h_dig(proofing_response, :product_response)
31
+ end
32
+
33
+ def h_dig(hash, *path)
34
+ Array(path).inject(hash) do |location, key|
35
+ location.respond_to?(:keys) ? location[key] : nil
36
+ end
31
37
  end
32
38
 
33
39
  end
@@ -2,11 +2,11 @@ module LexisNexisInstantAuthenticate
2
2
  module Resources
3
3
  class Quiz < Base
4
4
  def questions
5
- product_response[:questions][:question]
5
+ h_dig(product_response, :questions, :question)
6
6
  end
7
7
 
8
8
  def id
9
- product_response[:questions][:"@ns:quiz_id"]
9
+ h_dig(product_response, :questions, :"@ns:quiz_id")
10
10
  end
11
11
 
12
12
  end
@@ -6,15 +6,15 @@ module LexisNexisInstantAuthenticate
6
6
  end
7
7
 
8
8
  def score
9
- product_response[:quiz_score]
9
+ h_dig(product_response, :quiz_score)
10
10
  end
11
11
 
12
12
  def quiz_id
13
- product_response[:quiz_score][:"@ns:quiz_id"]
13
+ h_dig(product_response, :quiz_score, :"@ns:quiz_id")
14
14
  end
15
15
 
16
16
  def lex_id
17
- product_response[:"@ns:lex_id"]
17
+ h_dig(product_response, :"@ns:lex_id")
18
18
  end
19
19
 
20
20
  end
@@ -1,3 +1,3 @@
1
1
  module LexisNexisInstantAuthenticate
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lexis_nexis_instant_authenticate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Ostrowski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-17 00:00:00.000000000 Z
11
+ date: 2016-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -104,6 +104,7 @@ files:
104
104
  - ".gitignore"
105
105
  - ".rspec"
106
106
  - ".travis.yml"
107
+ - CHANGELOG.md
107
108
  - Gemfile
108
109
  - LICENSE.txt
109
110
  - README.md