blockscore 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +58 -0
  3. data/.hound.yml +217 -0
  4. data/Gemfile +19 -7
  5. data/LICENSE +21 -0
  6. data/README.md +37 -33
  7. data/Rakefile +1 -15
  8. data/blockscore.gemspec +30 -81
  9. data/circle.yml +13 -0
  10. data/lib/blockscore.rb +43 -4
  11. data/lib/blockscore/actions/all.rb +27 -0
  12. data/lib/blockscore/actions/create.rb +34 -0
  13. data/lib/blockscore/actions/delete.rb +31 -0
  14. data/lib/blockscore/actions/retrieve.rb +24 -0
  15. data/lib/blockscore/actions/update.rb +46 -0
  16. data/lib/blockscore/base.rb +117 -0
  17. data/lib/blockscore/candidate.rb +32 -0
  18. data/lib/blockscore/collection.rb +12 -0
  19. data/lib/blockscore/company.rb +7 -0
  20. data/lib/blockscore/connection.rb +65 -0
  21. data/lib/blockscore/dispatch.rb +26 -0
  22. data/lib/blockscore/errors/api_connection_error.rb +6 -0
  23. data/lib/blockscore/errors/api_error.rb +33 -0
  24. data/lib/blockscore/errors/authentication_error.rb +4 -0
  25. data/lib/blockscore/errors/error.rb +4 -0
  26. data/lib/blockscore/errors/invalid_request_error.rb +29 -0
  27. data/lib/blockscore/errors/no_api_key_error.rb +4 -0
  28. data/lib/blockscore/errors/not_found_error.rb +4 -0
  29. data/lib/blockscore/fingerprint.rb +46 -0
  30. data/lib/blockscore/person.rb +14 -0
  31. data/lib/blockscore/question_set.rb +26 -0
  32. data/lib/blockscore/response.rb +29 -0
  33. data/lib/blockscore/util.rb +80 -0
  34. data/lib/blockscore/version.rb +3 -0
  35. data/lib/blockscore/watchlist_hit.rb +4 -0
  36. metadata +82 -48
  37. data/LICENSE.txt +0 -20
  38. data/VERSION +0 -1
  39. data/blockscore-ruby.sublime-project +0 -21
  40. data/lib/blockscore/candidates.rb +0 -49
  41. data/lib/blockscore/client.rb +0 -81
  42. data/lib/blockscore/companies.rb +0 -36
  43. data/lib/blockscore/error/authorization_error.rb +0 -13
  44. data/lib/blockscore/error/blockscore_error.rb +0 -26
  45. data/lib/blockscore/error/error_handler.rb +0 -141
  46. data/lib/blockscore/error/internal_server_error.rb +0 -19
  47. data/lib/blockscore/error/not_found_error.rb +0 -12
  48. data/lib/blockscore/error/parameter_error.rb +0 -12
  49. data/lib/blockscore/error/validation_error.rb +0 -28
  50. data/lib/blockscore/errors.rb +0 -3
  51. data/lib/blockscore/people.rb +0 -37
  52. data/lib/blockscore/question_sets.rb +0 -49
  53. data/lib/blockscore/watchlists.rb +0 -18
  54. data/test/helper.rb +0 -37
  55. data/test/test_blockscore.rb +0 -226
@@ -1,13 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'blockscore_error')
2
-
3
- module BlockScore
4
- class AuthorizationError < BlockscoreError
5
-
6
- @@http_status = 401
7
-
8
- def initialize(message=nil, json_body=nil, error_type=nil)
9
-
10
- super(message, json_body, @@http_status, error_type)
11
- end
12
- end
13
- end
@@ -1,26 +0,0 @@
1
- module BlockScore
2
- class BlockscoreError < StandardError
3
-
4
- attr_reader :message
5
- attr_reader :error_type
6
- attr_reader :http_status
7
- attr_reader :json_body
8
-
9
- def initialize(message=nil, json_body=nil, http_status="400",
10
- error_type="invalid_request_error")
11
- super(message)
12
-
13
- message_desc = "#{json_body["error"]["param"]} #{json_body["error"]["code"]}"
14
-
15
- @error_type = error_type
16
- @http_status = http_status
17
- @json_body = json_body
18
- @message = "#{message} (#{message_desc})"
19
- end
20
-
21
- def to_s
22
- "Status: #{@http_status}. Type: #{@error_type}, Message: #{@message}"
23
- end
24
-
25
- end
26
- end
@@ -1,141 +0,0 @@
1
- require 'json'
2
- module BlockScore
3
- class ErrorHandler
4
-
5
- def initialize()
6
- end
7
-
8
- # Function:
9
- # check_error()
10
- #
11
- # response -
12
- #
13
- def check_error(response)
14
-
15
- @code = response.code
16
- @type = response.headers['content-type']
17
-
18
- if (200 <= @code and @code < 300)
19
- return response
20
- end
21
-
22
- @body = get_body(response)
23
- @message = get_message(@body)
24
- @error_type = @error_code = @param = nil
25
-
26
- # Internal API Error
27
- if @code == 500
28
- raise BlockScore::InternalServerError.new(@message, @body, @error_type)
29
- end
30
-
31
- if @body.include? 'error'
32
- @error = @body['error']
33
- @error_type = get_value(@error, 'type')
34
- @error_code = get_value(@error, 'code')
35
- @param = get_value(@error, 'param')
36
- end # body.include? 'error'
37
-
38
- process_code(@code)
39
-
40
- end # check_error
41
-
42
-
43
- # Function:
44
- # process_code()
45
- #
46
- # Tries to determine which error to raise.
47
- #
48
- # code -
49
- #
50
- def process_code(code)
51
-
52
- # Input data error
53
- if code == 400
54
- # Could not be validated.
55
- # Which type of input error?
56
- if @param
57
- raise BlockScore::ValidationError.new(@message, @body, @error_type, @param, @error_code)
58
-
59
- # Required parameter is missing
60
- else
61
- raise BlockScore::ParameterError.new(@message, @body, @error_type)
62
- end # if param
63
-
64
- # Error with an API Key
65
- elsif code == 401
66
- raise BlockScore::AuthorizationError.new(@message, @body, @error_type)
67
-
68
- # Trying to access nonexistent endpoint
69
- elsif code == 404
70
- raise BlockScore::NotFoundError.new(@message, @body, @error_type)
71
-
72
- # Generic BlockscoreError (fallback)
73
- else
74
- raise BlockScore::BlockscoreError.new(@message, @body)
75
-
76
- end # end code checking
77
-
78
- end # process code
79
-
80
-
81
-
82
- # Function:
83
- # get_body()
84
- #
85
- # response -
86
- #
87
- def get_body(response)
88
- type = response.headers['content-type']
89
- body = response.body
90
-
91
- # If response body is in JSON
92
- if type.include? 'json'
93
- body = JSON.parse(body)
94
- end # type.include?
95
-
96
- body
97
-
98
- end
99
-
100
-
101
- # Function:
102
- # get_message()
103
- #
104
- # body -
105
- #
106
- def get_message(body)
107
- message = ''
108
- if body.is_a? String
109
- message = body
110
-
111
- elsif body.is_a? Hash
112
- if body.include? 'error'
113
- message = body['error']['message']
114
- else
115
- message = 'Unable to select error message from json returned by request responsible for error'
116
- end # if body.include?
117
- else
118
- message = 'Unable to understand the content type of response returned by request responsible for error'
119
- end # if body.is_a? String
120
-
121
- message
122
- end # def get_message
123
-
124
-
125
- # Function:
126
- # get_value()
127
- #
128
- # obj -
129
- # key -
130
- #
131
- def get_value(obj, key)
132
-
133
- if obj.include? key
134
- return obj[key]
135
- end
136
-
137
- nil
138
- end
139
-
140
- end # class ErrorHandler
141
- end # module BlockScore
@@ -1,19 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'blockscore_error')
2
-
3
- module BlockScore
4
- class InternalServerError < BlockscoreError
5
-
6
- @@http_status = 500
7
-
8
- def initialize(message=nil, json_body=nil, error_type=nil)
9
-
10
- super(message, json_body, @@http_status, error_type)
11
-
12
- @message = message
13
- end
14
-
15
- def to_s
16
- "Status: #{@@http_status}, Message: #{@message}"
17
- end
18
- end
19
- end
@@ -1,12 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'blockscore_error')
2
-
3
- module BlockScore
4
- class NotFoundError < BlockscoreError
5
-
6
- @@http_status = 404
7
-
8
- def initialize(message=nil, json_body=nil, error_type=nil)
9
- super(message, json_body, @@http_status, error_type)
10
- end
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'blockscore_error')
2
-
3
- module BlockScore
4
- class ParameterError < BlockscoreError
5
-
6
- @@http_status = 400
7
-
8
- def initialize(message=nil, json_body=nil, error_type=nil)
9
- super(message, json_body, @@http_status, error_type)
10
- end
11
- end
12
- end
@@ -1,28 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'blockscore_error')
2
-
3
- module BlockScore
4
- class ValidationError < BlockscoreError
5
-
6
- attr_reader :http_status
7
- attr_reader :error_code
8
- attr_reader :param
9
-
10
- @@http_status = 400
11
-
12
- def initialize(message=nil, json_body=nil,
13
- error_type=nil, param=nil, error_code=nil)
14
-
15
- super(message, json_body, @@http_status, error_type)
16
-
17
- @error_code = error_code
18
- @param = param
19
-
20
- end
21
-
22
- def to_s
23
- s = "Status: #{@@http_status}, Type: #{@error_type}, Param: #{@param}, "
24
- s += "Code: #{@error_code}, Message: #{@message}"
25
- end
26
-
27
- end
28
- end
@@ -1,3 +0,0 @@
1
- Dir[File.dirname(__FILE__) + '/error/*.rb'].each do |file|
2
- require file
3
- end
@@ -1,37 +0,0 @@
1
- module BlockScore
2
- class People
3
- PATH = '/people'
4
-
5
- def initialize(client)
6
- @client = client
7
- end
8
-
9
- #
10
- # /people POST
11
- #
12
- def create(options = {})
13
- response = @client.post PATH, options
14
- end
15
-
16
- #
17
- # /people/:id GET
18
- #
19
- # id - ID of the person to retrieve.
20
- def retrieve(id, options = {})
21
- body = (options.include? :query) ? options[:body] : {}
22
- response = @client.get "#{PATH}/#{id.to_s}", body
23
- end
24
-
25
- #
26
- # '/people' GET
27
- #
28
- def all(count = nil, offset = nil, options = {})
29
- body = (options.include? :body) ? options[:body] : {}
30
-
31
- body[:count] = count
32
- body[:offset] = offset
33
-
34
- @client.get PATH, body
35
- end
36
- end
37
- end
@@ -1,49 +0,0 @@
1
- module BlockScore
2
- class QuestionSets
3
- PATH = '/question_sets'
4
-
5
- def initialize(client)
6
- @client = client
7
- end
8
-
9
- def create(person_id, options = {})
10
- body = (options.include? :body) ? options[:body] : {}
11
- body[:person_id] = person_id
12
-
13
- response = @client.post PATH, body
14
- end
15
-
16
- #
17
- # '/question_sets/:id/score' POST
18
- #
19
- # answers -
20
- def score(id, answers)
21
- body = {}
22
- body[:answers] = answers
23
-
24
- response = @client.post "#{PATH}/#{id.to_s}/score", body
25
- end
26
-
27
- #
28
- # /question_sets/:id GET
29
- #
30
- # id -
31
- def retrieve(id)
32
- body = Hash.new
33
-
34
- response = @client.get "#{PATH}/#{id.to_s}", body
35
- end
36
-
37
- #
38
- # '/question_sets' GET
39
- #
40
- def all(count = nil, offset = nil, options = {})
41
- body = (options.include? :body) ? options[:body] : {}
42
-
43
- body[:count] = count
44
- body[:offset] = offset
45
-
46
- @client.get PATH, body
47
- end
48
- end
49
- end
@@ -1,18 +0,0 @@
1
- module BlockScore
2
- class Watchlists
3
- PATH = '/watchlists'
4
-
5
- def initialize(client)
6
- @client = client
7
- end
8
-
9
- # POST https://api.blockscore.com/watchlists
10
- def search(candidate_id, match_type = nil)
11
- body = {}
12
- body[:candidate_id] = candidate_id
13
- body[:match_type] = match_type
14
-
15
- @client.post PATH, body
16
- end
17
- end
18
- end
@@ -1,37 +0,0 @@
1
- require 'simplecov'
2
- require 'minitest/autorun'
3
- require 'shoulda'
4
- # require 'shoulda_context'
5
-
6
- module SimpleCov::Configuration
7
- def clean_filters
8
- @filters = []
9
- end
10
- end
11
-
12
- SimpleCov.configure do
13
- clean_filters
14
- load_profile 'test_frameworks'
15
- end
16
-
17
- ENV["COVERAGE"] && SimpleCov.start do
18
- add_filter "/.rvm/"
19
- end
20
- require 'rubygems'
21
- require 'bundler'
22
- begin
23
- Bundler.setup(:default, :development)
24
- rescue Bundler::BundlerError => e
25
- $stderr.puts e.message
26
- $stderr.puts "Run `bundle install` to install missing gems"
27
- exit e.status_code
28
- end
29
- require 'test/unit'
30
- require 'shoulda'
31
-
32
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
33
- $LOAD_PATH.unshift(File.dirname(__FILE__))
34
- require 'blockscore'
35
-
36
- class Test::Unit::TestCase
37
- end
@@ -1,226 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'helper')
2
-
3
- class TestBlockScore < Test::Unit::TestCase
4
- # If you'd like to run the test suite, fill in your API key,
5
- # a person ID, a question set ID, a company ID, and a candidate ID below.
6
- @api_key = ""
7
-
8
- @@person_id = ""
9
- @@question_set_id = ""
10
- @@company_id = ""
11
- @@candidate_id = ""
12
-
13
- @@client = BlockScore::Client.new(@api_key)
14
-
15
- context "a watchlist" do
16
- should "return search watchlists" do
17
- response = @@client.watchlists.search(@@candidate_id)
18
- assert_equal 200, response.code
19
- end
20
- end
21
-
22
- context "a candidate" do
23
- should "return create a candidate" do
24
- watchlist_params = {
25
- :note => "12341234",
26
- :ssn => "0001",
27
- :date_of_birth => "1940-08-11",
28
- :name_first => "John",
29
- :name_middle => "",
30
- :name_last => "Bredenkamp",
31
- :address_street1 => "1 Infinite Loop",
32
- :address_city => "Cupertino",
33
- :address_country_code => "US"
34
- }
35
- response = @@client.candidates.create(watchlist_params)
36
- assert_equal 201, response.code
37
- end
38
-
39
- should "return edit a candidate" do
40
- watchlist_params = {
41
- :date_of_birth => "1945-05-08",
42
- :name_middle => "Jones"
43
- }
44
- response = @@client.candidates.edit(@@candidate_id, watchlist_params)
45
- assert_equal 200, response.code
46
- end
47
-
48
- should "return retrieve a candidate" do
49
- response = @@client.candidates.retrieve(@@candidate_id)
50
- assert_equal 200, response.code
51
- end
52
-
53
- should "return a list of candidates" do
54
- response = @@client.candidates.all
55
- assert_equal 200, response.code
56
- end
57
-
58
- should "return a history of a candidate" do
59
- response = @@client.candidates.history(@@candidate_id)
60
- assert_equal 200, response.code
61
- end
62
-
63
- should "return the hits of a candidate" do
64
- response = @@client.candidates.hits(@@candidate_id)
65
- assert_equal 200, response.code
66
- end
67
-
68
- should "return delete a candidate" do
69
- response = @@client.candidates.delete(@@candidate_id)
70
- assert_equal 200, response.code
71
- end
72
-
73
- end
74
-
75
- context "a company" do
76
- should "return a list of companies" do
77
- response = @@client.companies.all
78
- assert_equal 200, response.code
79
- end
80
-
81
- should "return count = 2 companies" do
82
- response = @@client.companies.all(count = 2)
83
- assert_equal 200, response.code
84
- end
85
-
86
- should "return count=2 offset=2 companies" do
87
- response = @@client.companies.all(count = 2, offset = 2)
88
- assert_equal 200, response.code
89
- end
90
-
91
- should "return a single company" do
92
- response = @@client.companies.retrieve(@@company_id)
93
- assert_equal 200, response.code
94
- end
95
-
96
- should "return create a company" do
97
- company_params = {
98
- :entity_name => "BlockScore",
99
- :tax_id => "123410000",
100
- :incorporation_day => 25,
101
- :incorporation_month => 8,
102
- :incorporation_year => 1980,
103
- :incorporation_state => "DE",
104
- :incorporation_country_code => "US",
105
- :incorporation_type => "corporation",
106
- :dbas => "BitRemit",
107
- :registration_number => "123123123",
108
- :email => "test@example.com",
109
- :url => "https://blockscore.com",
110
- :phone_number => "6505555555",
111
- :ip_address => "67.160.8.182",
112
- :address_street1 => "1 Infinite Loop",
113
- :address_street2 => nil,
114
- :address_city => "Cupertino",
115
- :address_subdivision => "CA",
116
- :address_postal_code => "95014",
117
- :address_country_code => "US"
118
- }
119
-
120
- response = @@client.companies.create(company_params)
121
-
122
- assert_equal 201, response.code
123
- end
124
- end
125
-
126
- context "a person" do
127
- should "return a list of people" do
128
- response = @@client.people.all
129
- assert_equal 200, response.code
130
- end
131
-
132
- should "return count = 2 people" do
133
- response = @@client.people.all(count = 2)
134
- assert_equal 200, response.code
135
- end
136
-
137
- should "return count=2 offset=2 people" do
138
- response = @@client.people.all(count = 2, offset = 2)
139
- assert_equal 200, response.code
140
- end
141
-
142
- should "return a single person" do
143
- response = @@client.people.retrieve(@@person_id)
144
- assert_equal 200, response.code
145
- end
146
-
147
- should "return create a person" do
148
- people_params = {
149
- :birth_day => 1,
150
- :birth_month => 1,
151
- :birth_year => 1975,
152
- :document_type => "ssn",
153
- :document_value => "0000",
154
- :name_first => "John",
155
- :name_middle => "P",
156
- :name_last => "Doe",
157
- :address_street1 => "1 Infinite Loop",
158
- :address_street2 => nil,
159
- :address_city => "Cupertino",
160
- :address_subdivision => "CA",
161
- :address_postal_code => "95014",
162
- :address_country_code => "US"
163
- }
164
-
165
- response = @@client.people.create(people_params)
166
-
167
- assert_equal 201, response.code
168
- end
169
- end
170
-
171
- context "a question set" do
172
- should "return create a question set" do
173
- response = @@client.question_sets.create(@@person_id)
174
- assert_equal 201, response.code
175
- end
176
-
177
- should "return a single question set" do
178
- response = @@client.question_sets.retrieve(@@question_set_id)
179
- assert_equal 200, response.code
180
- end
181
-
182
- should "return a list of question sets" do
183
- response = @@client.question_sets.all
184
- assert_equal 200, response.code
185
- end
186
-
187
- should "return count = 2" do
188
- response = @@client.question_sets.all(count = 2)
189
- assert_equal 200, response.code
190
- end
191
-
192
- should "return count = 2 offset = 2" do
193
- response = @@client.question_sets.all(count = 2, offset = 2)
194
- assert_equal 200, response.code
195
- end
196
-
197
- should "return a score" do
198
- @answers = [
199
- {
200
- :question_id => 1,
201
- :answer_id => 1
202
- },
203
- {
204
- :question_id => 2,
205
- :answer_id => 1
206
- },
207
- {
208
- :question_id => 3,
209
- :answer_id => 1
210
- },
211
- {
212
- :question_id => 4,
213
- :answer_id => 1
214
- },
215
- {
216
- :question_id => 5,
217
- :answer_id => 1
218
- }
219
- ]
220
-
221
- response = @@client.question_sets.score(@@question_set_id, @answers)
222
-
223
- assert_equal 201, response.code
224
- end
225
- end
226
- end