ssci_inc 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/.octopolo.yml +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +22 -0
- data/CHANGELOG.markdown +0 -0
- data/Gemfile +3 -0
- data/README.md +66 -0
- data/Rakefile +26 -0
- data/lib/ssci_inc/configuration.rb +62 -0
- data/lib/ssci_inc/dsl.rb +30 -0
- data/lib/ssci_inc/person_name.rb +29 -0
- data/lib/ssci_inc/request.rb +196 -0
- data/lib/ssci_inc/response.rb +44 -0
- data/lib/ssci_inc/screening/civil_county.rb +17 -0
- data/lib/ssci_inc/screening/credit.rb +16 -0
- data/lib/ssci_inc/screening/criminal_county.rb +17 -0
- data/lib/ssci_inc/screening/criminal_federal.rb +17 -0
- data/lib/ssci_inc/screening/criminal_security.rb +12 -0
- data/lib/ssci_inc/screening/criminal_state.rb +16 -0
- data/lib/ssci_inc/screening/eviction.rb +16 -0
- data/lib/ssci_inc/screening/model.rb +27 -0
- data/lib/ssci_inc/screening/person_search.rb +16 -0
- data/lib/ssci_inc/version.rb +3 -0
- data/lib/ssci_inc.rb +19 -0
- data/ssci_inc.gemspec +32 -0
- data/test/integration/initial_request_test.rb +21 -0
- data/test/test-updated.xml +113 -0
- data/test/test_helper.rb +120 -0
- data/test/unit/request_test.rb +93 -0
- data/test/unit/response_test.rb +68 -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 +233 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: df8f76de6d18ea79119204dc67e777553af6a989
|
4
|
+
data.tar.gz: ae34bd28ec63ec2ae9a83a0ce39c61cef50a604a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 47c824840d70d4a2a8372e83d530cd4b4627c1da2acc2382c81a95c16adbf120f7bdd69e0fa83fcea5b5e5299b2ff29b0a5a98ff088aefd23cbeea7668d26a5e
|
7
|
+
data.tar.gz: 5f8b1beddc9cf92735058638c64cdd39abc3147023707c64928124a316922b262c0ff6e40d29f4ab499841fec8382f4e579d4add252381d732848775c3d20489
|
data/.gitignore
ADDED
data/.octopolo.yml
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ssci_inc
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.4
|
data/.travis.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
sudo: false
|
2
|
+
branches:
|
3
|
+
only:
|
4
|
+
- master
|
5
|
+
|
6
|
+
notifications:
|
7
|
+
slack: sportngin:Yr24DXJUvIOegSPwKMG099D1
|
8
|
+
|
9
|
+
after_script:
|
10
|
+
- uptime && vmstat -S M
|
11
|
+
|
12
|
+
language: ruby
|
13
|
+
rvm:
|
14
|
+
- 1.9.3
|
15
|
+
- 2.0.0
|
16
|
+
- 2.1
|
17
|
+
- 2.2
|
18
|
+
|
19
|
+
cache: bundler
|
20
|
+
|
21
|
+
script:
|
22
|
+
- bundle exec rake test
|
data/CHANGELOG.markdown
ADDED
File without changes
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# SSCI Inc
|
2
|
+
|
3
|
+
The ssci_inc gem is a ruby gem used for submitted background check requests to
|
4
|
+
[SSCI](http://www.ssci2000.com/)
|
5
|
+
|
6
|
+
Using this API requires that you have an existing account with SSCI.
|
7
|
+
|
8
|
+
Install
|
9
|
+
--------
|
10
|
+
|
11
|
+
```shell
|
12
|
+
gem install ssci_inc
|
13
|
+
```
|
14
|
+
or add the following line to Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'ssci_inc'
|
18
|
+
```
|
19
|
+
and run `bundle install` from your shell.
|
20
|
+
|
21
|
+
Usage
|
22
|
+
---------------------------
|
23
|
+
|
24
|
+
To create a new background check and submit it.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
request = SsciInc::Request.new do |r|
|
28
|
+
r.user_name = "XML_TST",
|
29
|
+
r.password = "ScROLL447breaK",
|
30
|
+
r.type = "TST Media",
|
31
|
+
r.reference_id = 112233,
|
32
|
+
r.reference = "ABC Company Inc.",
|
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 = SsciInc::Request.new(hash)
|
51
|
+
|
52
|
+
# or initialize with nothing and build on the fly
|
53
|
+
|
54
|
+
request = SsciInc::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 # => SsciInc::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/ssci_inc -r ssci_inc.rb"
|
26
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module SsciInc
|
2
|
+
class Configuration
|
3
|
+
|
4
|
+
attr_accessor :base_uri,
|
5
|
+
:user_name,
|
6
|
+
:password,
|
7
|
+
:postback_url,
|
8
|
+
:postback_username,
|
9
|
+
:postback_password
|
10
|
+
|
11
|
+
def base_uri
|
12
|
+
@base_uri ||= 'http://localhost'
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
attr_accessor :configuration
|
19
|
+
|
20
|
+
def configuration
|
21
|
+
@configuration ||= Configuration.new
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Public: Configure ssci inc gem
|
26
|
+
#
|
27
|
+
# Examples
|
28
|
+
# SsciInc.configure do |config|
|
29
|
+
# bg_create_uri: ********
|
30
|
+
# bg_index_uri: ********
|
31
|
+
# site_identifier: ********
|
32
|
+
# account_code: ********
|
33
|
+
# username: ********
|
34
|
+
# password: ********
|
35
|
+
# postback_username: ********
|
36
|
+
# postback_password: ********
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
def self.configure
|
40
|
+
yield(configuration)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Public: Configure ssci inc gem with yaml file
|
44
|
+
#
|
45
|
+
# file - The name of the file to parse. (optional)
|
46
|
+
# Defaults to "config/ssci_inc.yml".
|
47
|
+
#
|
48
|
+
# Examples
|
49
|
+
# SsciInc.load_config("ssci_inc.yml")
|
50
|
+
#
|
51
|
+
def self.load_config(file="config/ssci_inc.yml")
|
52
|
+
if File.exists?(file)
|
53
|
+
h = YAML::load(IO.read(file))
|
54
|
+
configure do |config|
|
55
|
+
h.each do |k,v|
|
56
|
+
config.send("#{k}=", v) if config.respond_to?("#{k}=")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
data/lib/ssci_inc/dsl.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
module SsciInc
|
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 SsciInc
|
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,196 @@
|
|
1
|
+
module SsciInc
|
2
|
+
class Request
|
3
|
+
include DSL
|
4
|
+
|
5
|
+
ADDITIONAL_ITEMS = [:postback_url, :postback_username,
|
6
|
+
:postback_password, :embed_credentials, :ordernotes,
|
7
|
+
:interface, :monthly_income, :monthly_rent]
|
8
|
+
|
9
|
+
# BackgroundCheck
|
10
|
+
attr_accessor :config,
|
11
|
+
:base_uri,
|
12
|
+
:user_name,
|
13
|
+
:password
|
14
|
+
|
15
|
+
# BackgroundSearchPackage
|
16
|
+
attr_accessor :action,
|
17
|
+
:type,
|
18
|
+
:reference_id,
|
19
|
+
:reference
|
20
|
+
|
21
|
+
# PersonalData
|
22
|
+
attr_accessor :email_address,
|
23
|
+
:telephone
|
24
|
+
|
25
|
+
# PersonName
|
26
|
+
attr_accessor :given_name,
|
27
|
+
:middle_name,
|
28
|
+
:family_name,
|
29
|
+
:affix
|
30
|
+
|
31
|
+
# DemographicDetail
|
32
|
+
attr_accessor :government_id,
|
33
|
+
:ssn_country_code,
|
34
|
+
:issuing_authority,
|
35
|
+
:date_of_birth
|
36
|
+
|
37
|
+
# PostalAddress
|
38
|
+
attr_accessor :country_code,
|
39
|
+
:postal_code,
|
40
|
+
:region,
|
41
|
+
:municipality,
|
42
|
+
:address_line,
|
43
|
+
:street_name
|
44
|
+
|
45
|
+
# Screenings
|
46
|
+
attr_reader :screenings
|
47
|
+
attr_accessor :use_defaults
|
48
|
+
|
49
|
+
# AdditionalItems
|
50
|
+
attr_accessor *ADDITIONAL_ITEMS
|
51
|
+
|
52
|
+
attr_reader :aliases
|
53
|
+
|
54
|
+
def initialize(h={})
|
55
|
+
init_defaults
|
56
|
+
h.each do |k,v|
|
57
|
+
send("#{k}=", v) if respond_to?("#{k}=")
|
58
|
+
end
|
59
|
+
yield self if block_given?
|
60
|
+
end
|
61
|
+
|
62
|
+
def additional_items
|
63
|
+
ADDITIONAL_ITEMS.inject({}) do |h,a|
|
64
|
+
v = send(a)
|
65
|
+
h[a] = send(a) unless v.nil?
|
66
|
+
h
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def ssn=(new_ssn)
|
71
|
+
@government_id = new_ssn
|
72
|
+
@ssn_country_code = "US"
|
73
|
+
@issuing_authority = "SSN"
|
74
|
+
end
|
75
|
+
|
76
|
+
def name
|
77
|
+
person_name do |p|
|
78
|
+
p.given_name = given_name
|
79
|
+
p.middle_name = middle_name
|
80
|
+
p.family_name = family_name
|
81
|
+
p.affix = affix
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def as_xml
|
86
|
+
Nokogiri::XML::Builder.new do |xml|
|
87
|
+
xml.BackgroundCheck(:userId => user_name, :password => password) {
|
88
|
+
xml.BackgroundSearchPackage(:type => type, :action => action) {
|
89
|
+
xml.ReferenceId reference_id
|
90
|
+
xml.Reference reference
|
91
|
+
xml.PersonalData {
|
92
|
+
xml.EmailAddress email_address
|
93
|
+
xml.Telephone telephone
|
94
|
+
xml.parent << name.as_xml
|
95
|
+
if aliases.any?
|
96
|
+
xml.Aliases {
|
97
|
+
aliases.each do |a|
|
98
|
+
xml.parent << a.as_xml
|
99
|
+
end
|
100
|
+
}
|
101
|
+
end
|
102
|
+
xml.DemographicDetail {
|
103
|
+
xml.GovernmentId(government_id,
|
104
|
+
:countryCode => ssn_country_code,
|
105
|
+
:issuingAuthority => issuing_authority)
|
106
|
+
xml.DateOfBirth date_of_birth
|
107
|
+
} # DemographicDetail
|
108
|
+
xml.PostalAddress {
|
109
|
+
xml.CountryCode country_code == "Canada" ? "CA" : "US"
|
110
|
+
xml.PostalCode postal_code
|
111
|
+
xml.Region region
|
112
|
+
xml.Municipality municipality
|
113
|
+
xml.DeliveryAddress {
|
114
|
+
xml.AddressLine address_line
|
115
|
+
xml.StreetName street_name
|
116
|
+
} # DeliveryAddress
|
117
|
+
} # PostalAddress
|
118
|
+
} # PersonalData
|
119
|
+
xml.Screenings(:useConfigurationDefaults => yes_or_no(use_defaults)) {
|
120
|
+
screenings.each do |s|
|
121
|
+
xml.parent << s.as_xml
|
122
|
+
end
|
123
|
+
additional_items.each do |k,v|
|
124
|
+
xml.AdditionalItems(:type => "x:#{k}") {
|
125
|
+
xml.Text v
|
126
|
+
}
|
127
|
+
end
|
128
|
+
} # Screenings
|
129
|
+
} # BackgroundSearchPackage
|
130
|
+
} # BackgroundCheck
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def to_xml
|
135
|
+
as_xml.to_xml
|
136
|
+
end
|
137
|
+
|
138
|
+
def request_options
|
139
|
+
{
|
140
|
+
body: { request: to_xml },
|
141
|
+
basic_auth: { username: user_name, password: password }
|
142
|
+
}
|
143
|
+
end
|
144
|
+
|
145
|
+
def build_request
|
146
|
+
HTTParty::Request.new(Net::HTTP::Post, base_uri, request_options)
|
147
|
+
end
|
148
|
+
|
149
|
+
def submit
|
150
|
+
response = build_request.perform
|
151
|
+
data = response.parsed_response
|
152
|
+
SsciInc::Response.new(data)
|
153
|
+
end
|
154
|
+
|
155
|
+
def config
|
156
|
+
@config || SsciInc.configuration
|
157
|
+
end
|
158
|
+
|
159
|
+
def base_uri
|
160
|
+
@base_uri || config.base_uri
|
161
|
+
end
|
162
|
+
|
163
|
+
def user_name
|
164
|
+
@user_name || config.user_name
|
165
|
+
end
|
166
|
+
|
167
|
+
def password
|
168
|
+
@password || config.password
|
169
|
+
end
|
170
|
+
|
171
|
+
def postback_url
|
172
|
+
@postback_url || config.postback_url
|
173
|
+
end
|
174
|
+
|
175
|
+
def postback_username
|
176
|
+
@postback_username || config.postback_username
|
177
|
+
end
|
178
|
+
|
179
|
+
def postback_password
|
180
|
+
@postback_password || config.postback_password
|
181
|
+
end
|
182
|
+
|
183
|
+
private
|
184
|
+
|
185
|
+
def init_defaults
|
186
|
+
@action = "submit"
|
187
|
+
@screenings = []
|
188
|
+
@aliases = []
|
189
|
+
end
|
190
|
+
|
191
|
+
def yes_or_no(v)
|
192
|
+
!!v ? "yes" : "no"
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module SsciInc
|
2
|
+
class Response
|
3
|
+
|
4
|
+
attr_reader :user_id, :password, :reference_id, :reference, :order_id, :order_status
|
5
|
+
attr_reader :result_status
|
6
|
+
|
7
|
+
# ErrorReport
|
8
|
+
attr_reader :error_code, :error_description
|
9
|
+
|
10
|
+
# postback
|
11
|
+
attr_reader :result_status,
|
12
|
+
:order_status_flag,
|
13
|
+
:screening_results_type,
|
14
|
+
:screening_results_media_type,
|
15
|
+
:screening_results_result_type,
|
16
|
+
:result_url
|
17
|
+
|
18
|
+
attr_reader :data
|
19
|
+
|
20
|
+
def initialize(data)
|
21
|
+
@data = data
|
22
|
+
document = Nokogiri::XML.parse(data)
|
23
|
+
@user_id = document.at("//@userId").try(:value)
|
24
|
+
@password = document.at("//@password").try(:value)
|
25
|
+
@reference_id = document.at("//ReferenceId").try(:text)
|
26
|
+
@reference = document.at("//Reference").try(:text)
|
27
|
+
@order_id = document.at("//OrderId").try(:text)
|
28
|
+
@order_status = document.at("//OrderStatus").try(:text)
|
29
|
+
|
30
|
+
# errors
|
31
|
+
@error_code = document.at("//ErrorCode").try(:text)
|
32
|
+
@error_description = document.at("//ErrorDescription").try(:text)
|
33
|
+
|
34
|
+
# completed postback response
|
35
|
+
@result_status = document.at("//ResultStatus").try(:text)
|
36
|
+
@order_status_flag = document.at("//OrderStatus//@flag").try(:value)
|
37
|
+
@screening_results_type = document.at("//ScreeningResults//@type").try(:value)
|
38
|
+
@screening_results_media_type = document.at("//ScreeningResults//@mediaType").try(:value)
|
39
|
+
@screening_results_result_type = document.at("//ScreeningResults//@resultType").try(:value)
|
40
|
+
@result_url = document.at("//InternetWebAddress").try(:text)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
class CivilCounty
|
4
|
+
include Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :region, :county
|
7
|
+
|
8
|
+
def as_xml
|
9
|
+
builder(:type => "civil", :qualifier => "county") do |xml|
|
10
|
+
xml.Region region unless region.nil?
|
11
|
+
xml.County county unless county.nil?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
class Credit
|
4
|
+
include Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :score, :fraud, :vendor
|
7
|
+
|
8
|
+
def as_xml
|
9
|
+
builder(:type => "credit") do |xml|
|
10
|
+
xml.Vendor(vendor, :score => score, :fraud => fraud)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
class CriminalCounty
|
4
|
+
include Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :region, :county
|
7
|
+
|
8
|
+
def as_xml
|
9
|
+
builder(:type => "criminal", :qualifier => "county") do |xml|
|
10
|
+
xml.Region region unless region.nil?
|
11
|
+
xml.County county unless county.nil?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
class CriminalFederal
|
4
|
+
include Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :region, :district
|
7
|
+
|
8
|
+
def as_xml
|
9
|
+
builder(:type => "criminal", :qualifier => "federal") do |xml|
|
10
|
+
xml.Region region unless region.nil?
|
11
|
+
xml.District district unless district.nil?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
class CriminalState
|
4
|
+
include Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :region
|
7
|
+
|
8
|
+
def as_xml
|
9
|
+
builder(:type => "criminal", :qualifier => "statewide") do |xml|
|
10
|
+
xml.Region region unless region.nil?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
class Eviction
|
4
|
+
include Screening::Model
|
5
|
+
|
6
|
+
attr_accessor :region
|
7
|
+
|
8
|
+
def as_xml
|
9
|
+
builder(:type => "eviction", :qualifier => "statewide") do |xml|
|
10
|
+
xml.Region region unless region.nil?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module SsciInc
|
2
|
+
module Screening
|
3
|
+
module Model
|
4
|
+
|
5
|
+
def initialize(h={})
|
6
|
+
h.each {|k,v| send("#{k}=", v) if respond_to?("#{k}=") }
|
7
|
+
end
|
8
|
+
|
9
|
+
def builder(attributes={})
|
10
|
+
Nokogiri::XML::Builder.new do |xml|
|
11
|
+
xml.send("Screening", attributes) {
|
12
|
+
yield xml if block_given?
|
13
|
+
}
|
14
|
+
end.parent.root
|
15
|
+
end
|
16
|
+
|
17
|
+
def as_xml
|
18
|
+
raise NotImplementedError
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_xml
|
22
|
+
as_xml.to_xml
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|