blueline_services 0.1.5
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.
- data/.gitignore +3 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +46 -0
- data/README.md +66 -0
- data/Rakefile +26 -0
- data/blueline_services.gemspec +31 -0
- data/lib/blueline_services.rb +19 -0
- data/lib/blueline_services/configuration.rb +54 -0
- data/lib/blueline_services/dsl.rb +30 -0
- data/lib/blueline_services/person_name.rb +29 -0
- data/lib/blueline_services/request.rb +155 -0
- data/lib/blueline_services/response.rb +43 -0
- data/lib/blueline_services/screening/civil_county.rb +17 -0
- data/lib/blueline_services/screening/credit.rb +16 -0
- data/lib/blueline_services/screening/criminal_county.rb +17 -0
- data/lib/blueline_services/screening/criminal_federal.rb +17 -0
- data/lib/blueline_services/screening/criminal_security.rb +12 -0
- data/lib/blueline_services/screening/criminal_state.rb +16 -0
- data/lib/blueline_services/screening/eviction.rb +16 -0
- data/lib/blueline_services/screening/model.rb +27 -0
- data/lib/blueline_services/screening/person_search.rb +16 -0
- data/lib/blueline_services/version.rb +3 -0
- data/test/integration/initial_request_test.rb +21 -0
- data/test/test-updated.xml +111 -0
- data/test/test_helper.rb +115 -0
- data/test/unit/request_test.rb +93 -0
- data/test/unit/response_test.rb +65 -0
- data/test/unit/screening/civil_county_test.rb +12 -0
- data/test/unit/screening/credit_test.rb +12 -0
- data/test/unit/screening/criminal_county_test.rb +12 -0
- data/test/unit/screening/criminal_federal_test.rb +12 -0
- data/test/unit/screening/criminal_security_test.rb +11 -0
- data/test/unit/screening/criminal_state_test.rb +12 -0
- data/test/unit/screening/eviction_test.rb +11 -0
- data/test/unit/screening/model_test.rb +37 -0
- data/test/unit/screening/person_search_test.rb +11 -0
- metadata +229 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: .
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                blueline_services (0.1.5)
         | 
| 5 | 
            +
                  activesupport
         | 
| 6 | 
            +
                  httparty
         | 
| 7 | 
            +
                  i18n
         | 
| 8 | 
            +
                  nokogiri
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            GEM
         | 
| 11 | 
            +
              remote: http://rubygems.org/
         | 
| 12 | 
            +
              specs:
         | 
| 13 | 
            +
                activesupport (3.0.10)
         | 
| 14 | 
            +
                coderay (1.0.5)
         | 
| 15 | 
            +
                httparty (0.8.1)
         | 
| 16 | 
            +
                  multi_json
         | 
| 17 | 
            +
                  multi_xml
         | 
| 18 | 
            +
                i18n (0.5.0)
         | 
| 19 | 
            +
                metaclass (0.0.1)
         | 
| 20 | 
            +
                method_source (0.7.1)
         | 
| 21 | 
            +
                mocha (0.10.4)
         | 
| 22 | 
            +
                  metaclass (~> 0.0.1)
         | 
| 23 | 
            +
                multi_json (1.2.0)
         | 
| 24 | 
            +
                multi_xml (0.4.2)
         | 
| 25 | 
            +
                nokogiri (1.5.0)
         | 
| 26 | 
            +
                pry (0.9.8.4)
         | 
| 27 | 
            +
                  coderay (~> 1.0.5)
         | 
| 28 | 
            +
                  method_source (~> 0.7.1)
         | 
| 29 | 
            +
                  slop (>= 2.4.4, < 3)
         | 
| 30 | 
            +
                rake (0.9.2.2)
         | 
| 31 | 
            +
                shoulda (3.0.1)
         | 
| 32 | 
            +
                  shoulda-context (~> 1.0.0)
         | 
| 33 | 
            +
                  shoulda-matchers (~> 1.0.0)
         | 
| 34 | 
            +
                shoulda-context (1.0.0)
         | 
| 35 | 
            +
                shoulda-matchers (1.0.0)
         | 
| 36 | 
            +
                slop (2.4.4)
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            PLATFORMS
         | 
| 39 | 
            +
              ruby
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            DEPENDENCIES
         | 
| 42 | 
            +
              blueline_services!
         | 
| 43 | 
            +
              mocha
         | 
| 44 | 
            +
              pry
         | 
| 45 | 
            +
              rake
         | 
| 46 | 
            +
              shoulda
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            # BluelineServices
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            The blueline_services gem is a ruby gem used for submitted background check requests to 
         | 
| 4 | 
            +
            [Blueline Services](http://www.blueline-services.com/)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Using this API requires that you have an existing account with Blueline Services,
         | 
| 7 | 
            +
            specifically a screening product, username, and password.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Install
         | 
| 10 | 
            +
            --------
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ```shell
         | 
| 13 | 
            +
            gem install blueline_services
         | 
| 14 | 
            +
            ```
         | 
| 15 | 
            +
            or add the following line to Gemfile:
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ```ruby
         | 
| 18 | 
            +
            gem 'blueline_services'
         | 
| 19 | 
            +
            ```
         | 
| 20 | 
            +
            and run `bundle install` from your shell.
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            Usage
         | 
| 23 | 
            +
            ---------------------------
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            To create a new background check and submit it.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ```ruby
         | 
| 28 | 
            +
            request = BluelineServices::Request.new do |r|
         | 
| 29 | 
            +
              r.user_name = "XML_TST",
         | 
| 30 | 
            +
              r.password = "ScROLL447breaK",
         | 
| 31 | 
            +
              r.type = "TST Media",
         | 
| 32 | 
            +
              r.reference_id = 112233,
         | 
| 33 | 
            +
              r.given_name = "HANK",
         | 
| 34 | 
            +
              r.family_name = "MESS",
         | 
| 35 | 
            +
              r.ssn = "333-22-1111",
         | 
| 36 | 
            +
              r.date_of_birth = "1960-01-01",
         | 
| 37 | 
            +
              r.postal_code = "60750",
         | 
| 38 | 
            +
              r.region = "IL",
         | 
| 39 | 
            +
              r.municipality = "FANTASY ISLAND",
         | 
| 40 | 
            +
              r.address_line = 899,
         | 
| 41 | 
            +
              r.street_name = "LINCOLN RD",
         | 
| 42 | 
            +
              r.postback_url = "http://127.0.0.1/listen.php",
         | 
| 43 | 
            +
              r.postback_username = "user",
         | 
| 44 | 
            +
              r.postback_password = "secret",
         | 
| 45 | 
            +
              r.use_defaults = true
         | 
| 46 | 
            +
            end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            # or initialize with a hash
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            request = BluelineServices::Request.new(hash)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            # or initialize with nothing and build on the fly
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            request = BluelineServices::Request.new
         | 
| 55 | 
            +
            request.user_name = "..."
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            # and then add some screens
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            request.criminal_county_screen do |screen|
         | 
| 60 | 
            +
              screen.region "WA"
         | 
| 61 | 
            +
              screen.county "KING"
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            request.submit # => BluelineServices::Response
         | 
| 65 | 
            +
            ```
         | 
| 66 | 
            +
             | 
    
        data/Rakefile
    ADDED
    
    | @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            require "bundler/gem_tasks"
         | 
| 2 | 
            +
            require 'rake/testtask'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            task :default => :test
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            task :test => ["test:units","test:integration"]
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            namespace :test do
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              Rake::TestTask.new(:units) do |test|
         | 
| 11 | 
            +
                test.libs << 'lib' << 'test'
         | 
| 12 | 
            +
                test.test_files = FileList["test/unit/**/*_test.rb"]
         | 
| 13 | 
            +
                test.verbose = true
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              Rake::TestTask.new(:integration) do |test|
         | 
| 17 | 
            +
                test.libs << 'lib' << 'test'
         | 
| 18 | 
            +
                test.test_files = FileList["test/integration/**/*_test.rb"]
         | 
| 19 | 
            +
                test.verbose = true
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            task :console do
         | 
| 25 | 
            +
              sh "pry -I lib/blueline_services -r blueline_services.rb"
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "blueline_services/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "blueline_services"
         | 
| 7 | 
            +
              s.version     = BluelineServices::VERSION
         | 
| 8 | 
            +
              s.authors     = ["Jon Karna", "Ed Lebert"]
         | 
| 9 | 
            +
              s.email       = ["jon.karna@tstmedia.com", "ed.lebert@tstmedia.com"]
         | 
| 10 | 
            +
              s.homepage    = ""
         | 
| 11 | 
            +
              s.summary     = %q{Submit background checks to Blueline Services}
         | 
| 12 | 
            +
              s.description = %q{The blueline_services gem is a ruby gem used for
         | 
| 13 | 
            +
                                 submitting background check requests to Blueline Services}
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              s.rubyforge_project = "blueline_services"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 18 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 19 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 20 | 
            +
              s.require_paths = ["lib"]
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              s.add_runtime_dependency "httparty"
         | 
| 23 | 
            +
              s.add_runtime_dependency "nokogiri"
         | 
| 24 | 
            +
              s.add_runtime_dependency "activesupport"
         | 
| 25 | 
            +
              s.add_runtime_dependency "i18n"
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              s.add_development_dependency "pry"
         | 
| 28 | 
            +
              s.add_development_dependency "rake"
         | 
| 29 | 
            +
              s.add_development_dependency "shoulda"
         | 
| 30 | 
            +
              s.add_development_dependency "mocha"
         | 
| 31 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require 'active_support/all'
         | 
| 2 | 
            +
            require 'nokogiri'
         | 
| 3 | 
            +
            require 'httparty'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require 'blueline_services/configuration'
         | 
| 6 | 
            +
            require 'blueline_services/dsl'
         | 
| 7 | 
            +
            require 'blueline_services/person_name'
         | 
| 8 | 
            +
            require 'blueline_services/request'
         | 
| 9 | 
            +
            require 'blueline_services/response'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            require 'blueline_services/screening/model'
         | 
| 12 | 
            +
            require 'blueline_services/screening/civil_county'
         | 
| 13 | 
            +
            require 'blueline_services/screening/credit'
         | 
| 14 | 
            +
            require 'blueline_services/screening/criminal_county'
         | 
| 15 | 
            +
            require 'blueline_services/screening/criminal_federal'
         | 
| 16 | 
            +
            require 'blueline_services/screening/criminal_security'
         | 
| 17 | 
            +
            require 'blueline_services/screening/criminal_state'
         | 
| 18 | 
            +
            require 'blueline_services/screening/eviction'
         | 
| 19 | 
            +
            require 'blueline_services/screening/person_search'
         | 
| @@ -0,0 +1,54 @@ | |
| 1 | 
            +
            module BluelineServices
         | 
| 2 | 
            +
              class Configuration
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                attr_accessor :user_name,
         | 
| 5 | 
            +
                              :password,
         | 
| 6 | 
            +
                              :postback_url,
         | 
| 7 | 
            +
                              :postback_username,
         | 
| 8 | 
            +
                              :postback_password
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              class << self
         | 
| 13 | 
            +
                attr_accessor :configuration
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def configuration
         | 
| 16 | 
            +
                  @configuration ||= Configuration.new
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              # Public: Configure blueline services gem
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              # Examples
         | 
| 23 | 
            +
              #   BluelineServices.configure do |config|
         | 
| 24 | 
            +
              #     config.user_name         = "***"
         | 
| 25 | 
            +
              #     config.password          = "***"
         | 
| 26 | 
            +
              #     config.postback_url      = "http://127.0.0.1/listen.php"
         | 
| 27 | 
            +
              #     config.postback_username = "user"
         | 
| 28 | 
            +
              #     config.postback_password = "secret"
         | 
| 29 | 
            +
              #   end
         | 
| 30 | 
            +
              #
         | 
| 31 | 
            +
              def self.configure
         | 
| 32 | 
            +
                yield(configuration)
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              # Public: Configure blueline services gem with yaml file
         | 
| 36 | 
            +
              #
         | 
| 37 | 
            +
              # file - The name of the file to parse. (optional)
         | 
| 38 | 
            +
              #        Defaults to "config/blueline.yml".
         | 
| 39 | 
            +
              #
         | 
| 40 | 
            +
              # Examples
         | 
| 41 | 
            +
              #   BluelineServices.load_config("blueline.yml")
         | 
| 42 | 
            +
              #
         | 
| 43 | 
            +
              def self.load_config(file="config/blueline.yml")
         | 
| 44 | 
            +
                if File.exists?(file)
         | 
| 45 | 
            +
                  h = YAML::load(IO.read(file))
         | 
| 46 | 
            +
                  configure do |config|
         | 
| 47 | 
            +
                    h.each do |k,v|
         | 
| 48 | 
            +
                      config.send("#{k}=", v) if config.respond_to?("#{k}=")
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            module BluelineServices
         | 
| 2 | 
            +
              module DSL
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                def screen(klass, h={}, &block)
         | 
| 5 | 
            +
                  s = klass.new(h)
         | 
| 6 | 
            +
                  yield s if block_given?
         | 
| 7 | 
            +
                  @screenings << s
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                %w[CivilCounty Credit CriminalCounty CriminalFederal CriminalSecurity
         | 
| 11 | 
            +
                   CriminalState PersonSearch].each do |class_name|
         | 
| 12 | 
            +
                  class_eval <<-eoruby, __FILE__, __LINE__ + 1
         | 
| 13 | 
            +
                    def #{class_name.underscore}_screen(*args, &block)
         | 
| 14 | 
            +
                      screen(Screening::#{class_name}, *args, &block)
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  eoruby
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def alias(h={}, &block)
         | 
| 20 | 
            +
                  @aliases << person_name(h, &block)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def person_name(h={}, &block)
         | 
| 24 | 
            +
                  p = PersonName.new(h)
         | 
| 25 | 
            +
                  yield p if block_given?
         | 
| 26 | 
            +
                  p
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module BluelineServices
         | 
| 2 | 
            +
              class PersonName
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                attr_accessor :given_name,
         | 
| 5 | 
            +
                              :middle_name,
         | 
| 6 | 
            +
                              :family_name,
         | 
| 7 | 
            +
                              :affix
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def initialize(h={})
         | 
| 10 | 
            +
                  h.each {|k,v| send("#{k}=", v) if respond_to?("#{k}=") }
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def as_xml
         | 
| 14 | 
            +
                  Nokogiri::XML::Builder.new do |xml|
         | 
| 15 | 
            +
                    xml.PersonName {
         | 
| 16 | 
            +
                      xml.GivenName given_name
         | 
| 17 | 
            +
                      xml.MiddleName middle_name
         | 
| 18 | 
            +
                      xml.FamilyName family_name
         | 
| 19 | 
            +
                      xml.Affix affix
         | 
| 20 | 
            +
                    }
         | 
| 21 | 
            +
                  end.parent.root
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def to_xml
         | 
| 25 | 
            +
                  as_xml.to_xml
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,155 @@ | |
| 1 | 
            +
            module BluelineServices
         | 
| 2 | 
            +
              class Request
         | 
| 3 | 
            +
                include DSL
         | 
| 4 | 
            +
                include HTTParty
         | 
| 5 | 
            +
                base_uri "https://www.bluelinebackgrounds.com/send/interchange"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                ADDITIONAL_ITEMS = [:postback_url, :postback_username,
         | 
| 8 | 
            +
                  :postback_password, :embed_credentials, :ordernotes,
         | 
| 9 | 
            +
                  :interface, :monthly_income, :monthly_rent]
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # BackgroundCheck
         | 
| 12 | 
            +
                attr_accessor :user_name,
         | 
| 13 | 
            +
                              :password
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                # BackgroundSearchPackage
         | 
| 16 | 
            +
                attr_accessor :action,
         | 
| 17 | 
            +
                              :type,
         | 
| 18 | 
            +
                              :reference_id
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                # PersonalData
         | 
| 21 | 
            +
                attr_accessor :email_address,
         | 
| 22 | 
            +
                              :telephone
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                # PersonName
         | 
| 25 | 
            +
                attr_accessor :given_name,
         | 
| 26 | 
            +
                              :middle_name,
         | 
| 27 | 
            +
                              :family_name,
         | 
| 28 | 
            +
                              :affix
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                # DemographicDetail
         | 
| 31 | 
            +
                attr_accessor :government_id,
         | 
| 32 | 
            +
                              :country_code,
         | 
| 33 | 
            +
                              :issuing_authority,
         | 
| 34 | 
            +
                              :date_of_birth,
         | 
| 35 | 
            +
                              :postal_code,
         | 
| 36 | 
            +
                              :region,
         | 
| 37 | 
            +
                              :municipality,
         | 
| 38 | 
            +
                              :address_line,
         | 
| 39 | 
            +
                              :street_name
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                # Screenings
         | 
| 42 | 
            +
                attr_reader   :screenings
         | 
| 43 | 
            +
                attr_accessor :use_defaults
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                # AdditionalItems
         | 
| 46 | 
            +
                attr_accessor *ADDITIONAL_ITEMS
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                attr_reader :aliases
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                def initialize(h={})
         | 
| 51 | 
            +
                  init_defaults
         | 
| 52 | 
            +
                  h.each do |k,v|
         | 
| 53 | 
            +
                    send("#{k}=", v) if respond_to?("#{k}=")
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                  yield self if block_given?
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def additional_items
         | 
| 59 | 
            +
                  ADDITIONAL_ITEMS.inject({}) do |h,a|
         | 
| 60 | 
            +
                    v = send(a)
         | 
| 61 | 
            +
                    h[a] = send(a) unless v.nil?
         | 
| 62 | 
            +
                    h
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                def ssn=(new_ssn)
         | 
| 67 | 
            +
                  @government_id = new_ssn
         | 
| 68 | 
            +
                  @country_code = "US"
         | 
| 69 | 
            +
                  @issuing_authority = "SSN"
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                def name
         | 
| 73 | 
            +
                  person_name do |p|
         | 
| 74 | 
            +
                    p.given_name = given_name
         | 
| 75 | 
            +
                    p.middle_name = middle_name
         | 
| 76 | 
            +
                    p.family_name = family_name
         | 
| 77 | 
            +
                    p.affix = affix
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                def as_xml
         | 
| 82 | 
            +
                  Nokogiri::XML::Builder.new do |xml|
         | 
| 83 | 
            +
                    xml.BackgroundCheck(:userId => user_name, :password => password) {
         | 
| 84 | 
            +
                      xml.BackgroundSearchPackage(:type => type, :action => action) {
         | 
| 85 | 
            +
                        xml.ReferenceId reference_id
         | 
| 86 | 
            +
                        xml.PersonalData {
         | 
| 87 | 
            +
                          xml.EmailAddress email_address
         | 
| 88 | 
            +
                          xml.Telephone telephone
         | 
| 89 | 
            +
                          xml.parent << name.as_xml
         | 
| 90 | 
            +
                          if aliases.any?
         | 
| 91 | 
            +
                            xml.Aliases {
         | 
| 92 | 
            +
                              aliases.each do |a|
         | 
| 93 | 
            +
                                xml.parent << a.as_xml
         | 
| 94 | 
            +
                              end
         | 
| 95 | 
            +
                            }
         | 
| 96 | 
            +
                          end
         | 
| 97 | 
            +
                          xml.DemographicDetail {
         | 
| 98 | 
            +
                            xml.GovernmentId(government_id,
         | 
| 99 | 
            +
                                  :countryCode => country_code,
         | 
| 100 | 
            +
                                  :issuingAuthority => issuing_authority)
         | 
| 101 | 
            +
                          } # DemographicDetail
         | 
| 102 | 
            +
                          xml.PostalAddress {
         | 
| 103 | 
            +
                            xml.PostalCode postal_code
         | 
| 104 | 
            +
                            xml.Region region
         | 
| 105 | 
            +
                            xml.Municipality municipality
         | 
| 106 | 
            +
                            xml.DeliveryAddress {
         | 
| 107 | 
            +
                              xml.AddressLine address_line
         | 
| 108 | 
            +
                              xml.StreetName street_name
         | 
| 109 | 
            +
                            } # DeliveryAddress
         | 
| 110 | 
            +
                          } # PostalAddress
         | 
| 111 | 
            +
                        } # PersonalData
         | 
| 112 | 
            +
                        xml.Screenings(:useConfigurationDefaults => yes_or_no(use_defaults)) {
         | 
| 113 | 
            +
                          screenings.each do |s|
         | 
| 114 | 
            +
                            xml.parent << s.as_xml
         | 
| 115 | 
            +
                          end
         | 
| 116 | 
            +
                          additional_items.each do |k,v|
         | 
| 117 | 
            +
                            xml.AdditionalItems(:type => "x:#{k}") {
         | 
| 118 | 
            +
                              xml.Text v
         | 
| 119 | 
            +
                            }
         | 
| 120 | 
            +
                          end
         | 
| 121 | 
            +
                        } # Screenings
         | 
| 122 | 
            +
                      } # BackgroundSearchPackage
         | 
| 123 | 
            +
                    } # BackgroundCheck
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
                end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                def to_xml
         | 
| 128 | 
            +
                  as_xml.to_xml
         | 
| 129 | 
            +
                end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                def submit
         | 
| 132 | 
            +
                  response = self.class.post("", :body => {:request => to_xml})
         | 
| 133 | 
            +
                  data = response.parsed_response
         | 
| 134 | 
            +
                  BluelineServices::Response.new(data)
         | 
| 135 | 
            +
                end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                private
         | 
| 138 | 
            +
                def init_defaults
         | 
| 139 | 
            +
                  config = BluelineServices.configuration
         | 
| 140 | 
            +
                  @user_name = config.user_name
         | 
| 141 | 
            +
                  @password = config.password
         | 
| 142 | 
            +
                  @postback_url = config.postback_url
         | 
| 143 | 
            +
                  @postback_username = config.postback_username
         | 
| 144 | 
            +
                  @postback_password = config.postback_password
         | 
| 145 | 
            +
                  @action = "submit"
         | 
| 146 | 
            +
                  @screenings = []
         | 
| 147 | 
            +
                  @aliases = []
         | 
| 148 | 
            +
                end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                def yes_or_no(v)
         | 
| 151 | 
            +
                  !!v ? "yes" : "no"
         | 
| 152 | 
            +
                end
         | 
| 153 | 
            +
             | 
| 154 | 
            +
              end
         | 
| 155 | 
            +
            end
         |