LexisNexisInstantAuthenticate
Generate & Score Instant Authenicate quizes using Lexis Nexis SOAP API.
Notes
This gem originally started as a simple Savon.rb service, however, it was quickly made clear that the LN SOAP API has some rough edges that require some specialized changes.
The main patch was around authentication. This gem monkey patches the Akami::WSSE#wsse_username_token method to include the cleartext password along with the digest auth.
This gem also does not leverage the WSDL from LN, even though it does import it into Savon. Savon has problems parsing the WSDL correctly and as such does not provide a reliable interface.
Installation
Add this line to your application's Gemfile:
gem 'lexis_nexis_instant_authenticate'And then execute:
$ bundle
Or install it yourself as:
$ gem install lexis_nexis_instant_authenticate
Usage
###Create a client.
@client = LexisNexisInstantAuthenticate::Client.new(username: ENV['LEXIS_UN'], password: ENV['LEXIS_PW'], flow: "LEXIS_FLOW", transaction_id: SecureRandom.uuid)Options:
-
username:Lexis Nexis supplied username. Typically, "#{account_id}/#{username}" -
password:Lexis Nexis supplied password. -
flow:Name of workflow. -
transaction_id:Optional GUID. This must be the same string between quiz creation & quiz scoring requests. If you do not pass one in on quiz creation,SecureRandom.uuidwill be used and returned with the generated quiz. That same string must be sent when scoring quiz.
###Generate a quiz.
response = @client.create_quiz({first_name: "Joe", middle_name: "L", last_name: "Smith", ssn: "123456789", dob: {day: "01", month: "01", year: "1950"}})
if response.success?
return response
else
return response.status
endResponse will have:
response.questionsresponse.idresponse.transaction_id
###Scoring Responses
The score_quiz method expects the following arguments:
-
transaction_idThis is the GUID that you called thecreate_quizmethod with or the GUID that was generated for you. -
responsesThis is an array of hashes in the form of{question_id: 1234, choice_id: 4321}
response = @client.score_quiz(transaction_id, Array(@responses).map(&:with_indifferent_access))
if response.success? && response.pass?
return true
else
return response.status
endResponse will have:
response.success?response.pass?response.scoreresponse.proofing_response
To-Do
- Write Tests
- Transition to actual WSDL from LN.
- Refactor
ResponseObject.
Development
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
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.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/RepPro/lexis_nexis_instant_authenticate.