creditsafe 0.5.0 → 0.5.1
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 +4 -4
- data/.rubocop.yml +8 -21
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -3
- data/Gemfile.lock +25 -60
- data/creditsafe.gemspec +23 -23
- data/lib/creditsafe/client.rb +33 -24
- data/lib/creditsafe/errors.rb +1 -0
- data/lib/creditsafe/match_type.rb +6 -6
- data/lib/creditsafe/messages.rb +28 -27
- data/lib/creditsafe/namespace.rb +7 -7
- data/lib/creditsafe/request/company_report.rb +7 -5
- data/lib/creditsafe/request/find_company.rb +24 -16
- data/lib/creditsafe/version.rb +2 -1
- data/lib/creditsafe.rb +3 -2
- data/spec/creditsafe/client_spec.rb +133 -112
- data/spec/creditsafe/messages_spec.rb +16 -9
- data/spec/spec_helper.rb +7 -6
- metadata +34 -36
- data/.rubocop_todo.yml +0 -16
- data/Guardfile +0 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cf10bbe9d25943eba61401c89e707d6d67d9c0a
|
4
|
+
data.tar.gz: 974f5a3dcfc5fd49d2d129785455e8985522a145
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75e79d97a4eea7b884d5a185c5cdbce1546c46bdb010c6c2a75b8fc23929169a7b2d64714ca42085b26b6649b1cc1e03852fc9609f3b8a99e09df5d359dd917b
|
7
|
+
data.tar.gz: 4589ea126e0f5056668a73853f166853b90427d28bd411c94e0cd140061659d081884f9f51f96313f13111607beb0810a81b10b007af418c7106258aff5da904
|
data/.rubocop.yml
CHANGED
@@ -1,24 +1,11 @@
|
|
1
|
-
|
1
|
+
inherit_gem:
|
2
|
+
gc_ruboconfig: rubocop.yml
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
AllowIfMethodIsEmpty: true
|
4
|
+
RSpec/NestedGroups:
|
5
|
+
Max: 5
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
RSpec/ExampleLength:
|
8
|
+
Max: 20
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
# Use trailing rather than leading dots on multi-line call chains
|
14
|
-
Style/DotPosition:
|
15
|
-
EnforcedStyle: trailing
|
16
|
-
|
17
|
-
Style/Documentation:
|
18
|
-
Enabled: false
|
19
|
-
|
20
|
-
Metrics/LineLength:
|
21
|
-
Max: 90
|
22
|
-
|
23
|
-
Metrics/ModuleLength:
|
24
|
-
Max: 120
|
10
|
+
RSpec/MultipleExpectations:
|
11
|
+
Max: 2
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
creditsafe (0.5.
|
4
|
+
creditsafe (0.5.1)
|
5
5
|
activesupport (>= 4.2.0)
|
6
6
|
excon (~> 0.45)
|
7
7
|
savon (~> 2.8)
|
@@ -18,10 +18,9 @@ GEM
|
|
18
18
|
akami (1.3.1)
|
19
19
|
gyoku (>= 0.4.0)
|
20
20
|
nokogiri
|
21
|
-
ast (2.
|
21
|
+
ast (2.4.0)
|
22
22
|
builder (3.2.3)
|
23
|
-
|
24
|
-
coderay (1.1.1)
|
23
|
+
coderay (1.1.2)
|
25
24
|
compare-xml (0.65)
|
26
25
|
nokogiri (~> 1.8)
|
27
26
|
concurrent-ruby (1.0.5)
|
@@ -29,25 +28,9 @@ GEM
|
|
29
28
|
safe_yaml (~> 1.0.0)
|
30
29
|
diff-lcs (1.3)
|
31
30
|
excon (0.60.0)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
formatador (>= 0.2.4)
|
36
|
-
listen (>= 2.7, < 4.0)
|
37
|
-
lumberjack (~> 1.0)
|
38
|
-
nenv (~> 0.1)
|
39
|
-
notiffany (~> 0.0)
|
40
|
-
pry (>= 0.9.12)
|
41
|
-
shellany (~> 0.0)
|
42
|
-
thor (>= 0.18.1)
|
43
|
-
guard-compat (1.2.1)
|
44
|
-
guard-rspec (4.7.3)
|
45
|
-
guard (~> 2.1)
|
46
|
-
guard-compat (~> 1.1)
|
47
|
-
rspec (>= 2.99.0, < 4.0)
|
48
|
-
guard-rubocop (1.2.0)
|
49
|
-
guard (~> 2.0)
|
50
|
-
rubocop (~> 0.20)
|
31
|
+
gc_ruboconfig (2.3.2)
|
32
|
+
rubocop (~> 0.52.1)
|
33
|
+
rubocop-rspec (~> 1.22.0)
|
51
34
|
gyoku (1.3.1)
|
52
35
|
builder (>= 2.1.2)
|
53
36
|
hashdiff (0.3.0)
|
@@ -56,36 +39,21 @@ GEM
|
|
56
39
|
socksify
|
57
40
|
i18n (0.9.5)
|
58
41
|
concurrent-ruby (~> 1.0)
|
59
|
-
|
60
|
-
rb-fsevent (~> 0.9, >= 0.9.4)
|
61
|
-
rb-inotify (~> 0.9, >= 0.9.7)
|
62
|
-
ruby_dep (~> 1.2)
|
63
|
-
lumberjack (1.0.10)
|
64
|
-
method_source (0.8.2)
|
42
|
+
method_source (0.9.0)
|
65
43
|
mini_portile2 (2.3.0)
|
66
44
|
minitest (5.11.3)
|
67
|
-
nenv (0.3.0)
|
68
45
|
nokogiri (1.8.2)
|
69
46
|
mini_portile2 (~> 2.3.0)
|
70
47
|
nori (2.6.0)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
parser (2.3.1.2)
|
75
|
-
ast (~> 2.2)
|
48
|
+
parallel (1.12.1)
|
49
|
+
parser (2.5.0.2)
|
50
|
+
ast (~> 2.4.0)
|
76
51
|
powerpack (0.1.1)
|
77
|
-
pry (0.
|
52
|
+
pry (0.11.3)
|
78
53
|
coderay (~> 1.1.0)
|
79
|
-
method_source (~> 0.
|
80
|
-
slop (~> 3.4)
|
81
|
-
pry-byebug (3.4.0)
|
82
|
-
byebug (~> 9.0)
|
83
|
-
pry (~> 0.10)
|
54
|
+
method_source (~> 0.9.0)
|
84
55
|
rack (2.0.4)
|
85
|
-
rainbow (
|
86
|
-
rb-fsevent (0.9.7)
|
87
|
-
rb-inotify (0.9.7)
|
88
|
-
ffi (>= 0.5.0)
|
56
|
+
rainbow (3.0.0)
|
89
57
|
rspec (3.7.0)
|
90
58
|
rspec-core (~> 3.7.0)
|
91
59
|
rspec-expectations (~> 3.7.0)
|
@@ -104,14 +72,16 @@ GEM
|
|
104
72
|
rspec-support (3.7.1)
|
105
73
|
rspec_junit_formatter (0.3.0)
|
106
74
|
rspec-core (>= 2, < 4, != 2.12.0)
|
107
|
-
rubocop (0.
|
108
|
-
|
75
|
+
rubocop (0.52.1)
|
76
|
+
parallel (~> 1.10)
|
77
|
+
parser (>= 2.4.0.2, < 3.0)
|
109
78
|
powerpack (~> 0.1)
|
110
|
-
rainbow (>=
|
79
|
+
rainbow (>= 2.2.2, < 4.0)
|
111
80
|
ruby-progressbar (~> 1.7)
|
112
81
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
113
|
-
|
114
|
-
|
82
|
+
rubocop-rspec (1.22.2)
|
83
|
+
rubocop (>= 0.52.1)
|
84
|
+
ruby-progressbar (1.9.0)
|
115
85
|
safe_yaml (1.0.4)
|
116
86
|
savon (2.12.0)
|
117
87
|
akami (~> 1.2)
|
@@ -121,15 +91,12 @@ GEM
|
|
121
91
|
nokogiri (>= 1.8.1)
|
122
92
|
nori (~> 2.4)
|
123
93
|
wasabi (~> 3.4)
|
124
|
-
shellany (0.0.1)
|
125
|
-
slop (3.6.0)
|
126
94
|
socksify (1.7.1)
|
127
|
-
thor (0.19.1)
|
128
95
|
thread_safe (0.3.6)
|
129
|
-
timecop (0.
|
96
|
+
timecop (0.9.1)
|
130
97
|
tzinfo (1.2.5)
|
131
98
|
thread_safe (~> 0.1)
|
132
|
-
unicode-display_width (1.
|
99
|
+
unicode-display_width (1.3.0)
|
133
100
|
wasabi (3.5.0)
|
134
101
|
httpi (~> 2.0)
|
135
102
|
nokogiri (>= 1.4.2)
|
@@ -145,14 +112,12 @@ DEPENDENCIES
|
|
145
112
|
bundler (~> 1.3)
|
146
113
|
compare-xml (~> 0.5)
|
147
114
|
creditsafe!
|
148
|
-
|
149
|
-
|
150
|
-
pry
|
151
|
-
pry-byebug
|
115
|
+
gc_ruboconfig (~> 2.3)
|
116
|
+
pry (~> 0.11)
|
152
117
|
rspec (~> 3.1)
|
153
118
|
rspec-its (~> 1.2)
|
154
119
|
rspec_junit_formatter (~> 0.3)
|
155
|
-
rubocop (~> 0.
|
120
|
+
rubocop (~> 0.52)
|
156
121
|
timecop (~> 0.8)
|
157
122
|
webmock (~> 1.20)
|
158
123
|
|
data/creditsafe.gemspec
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require
|
5
|
+
require "creditsafe/version"
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = "creditsafe"
|
9
9
|
spec.version = Creditsafe::VERSION
|
10
|
-
spec.authors = [
|
11
|
-
spec.email = [
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
10
|
+
spec.authors = ["GoCardless Engineering"]
|
11
|
+
spec.email = ["engineering@gocardless.com"]
|
12
|
+
spec.summary = "Ruby client for the Creditsafe SOAP API"
|
13
|
+
spec.description = "Ruby client for the Creditsafe SOAP API"
|
14
|
+
spec.homepage = "https://github.com/gocardless/creditsafe-ruby"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_runtime_dependency
|
22
|
-
spec.add_runtime_dependency
|
23
|
-
spec.add_runtime_dependency
|
21
|
+
spec.add_runtime_dependency "activesupport", ">= 4.2.0"
|
22
|
+
spec.add_runtime_dependency "excon", "~> 0.45"
|
23
|
+
spec.add_runtime_dependency "savon", "~> 2.8"
|
24
24
|
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
34
|
-
spec.add_development_dependency
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
26
|
+
spec.add_development_dependency "compare-xml", "~> 0.5"
|
27
|
+
spec.add_development_dependency "gc_ruboconfig", "~> 2.3"
|
28
|
+
spec.add_development_dependency "pry", "~> 0.11"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.1"
|
30
|
+
spec.add_development_dependency "rspec-its", "~> 1.2"
|
31
|
+
spec.add_development_dependency "rspec_junit_formatter", "~> 0.3"
|
32
|
+
spec.add_development_dependency "rubocop", "~> 0.52"
|
33
|
+
spec.add_development_dependency "timecop", "~> 0.8"
|
34
|
+
spec.add_development_dependency "webmock", "~> 1.20"
|
35
35
|
end
|
data/lib/creditsafe/client.rb
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'securerandom'
|
3
|
-
require 'savon'
|
4
|
-
require 'excon'
|
5
2
|
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
3
|
+
require "securerandom"
|
4
|
+
require "savon"
|
5
|
+
require "excon"
|
9
6
|
|
10
|
-
require
|
11
|
-
require
|
7
|
+
require "creditsafe/errors"
|
8
|
+
require "creditsafe/messages"
|
9
|
+
require "creditsafe/namespace"
|
12
10
|
|
13
|
-
require
|
11
|
+
require "creditsafe/request/company_report"
|
12
|
+
require "creditsafe/request/find_company"
|
13
|
+
|
14
|
+
require "active_support/notifications"
|
14
15
|
|
15
16
|
module Creditsafe
|
16
17
|
class Client
|
17
|
-
ENVIRONMENTS = %i
|
18
|
+
ENVIRONMENTS = %i[live test].freeze
|
18
19
|
|
19
20
|
def initialize(username: nil, password: nil, savon_opts: {},
|
20
21
|
environment: :live, log_level: :warn)
|
@@ -37,9 +38,9 @@ module Creditsafe
|
|
37
38
|
response = invoke_soap(:find_companies, request.message)
|
38
39
|
|
39
40
|
companies = response.
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
fetch(:find_companies_response).
|
42
|
+
fetch(:find_companies_result).
|
43
|
+
fetch(:companies)
|
43
44
|
|
44
45
|
companies.nil? ? nil : companies.fetch(:company)
|
45
46
|
end
|
@@ -64,11 +65,10 @@ module Creditsafe
|
|
64
65
|
|
65
66
|
def handle_message_for_response(response)
|
66
67
|
[
|
67
|
-
*response.xpath(
|
68
|
-
*response.xpath(
|
68
|
+
*response.xpath("//q1:Message"),
|
69
|
+
*response.xpath("//xmlns:Message"),
|
69
70
|
].each do |message|
|
70
|
-
api_message = Creditsafe::Messages.
|
71
|
-
for_code(message.attributes['Code'].value)
|
71
|
+
api_message = Creditsafe::Messages.for_code(message.attributes["Code"].value)
|
72
72
|
|
73
73
|
api_error_message = api_message.message
|
74
74
|
api_error_message += " (#{message.text})" unless message.text.blank?
|
@@ -77,6 +77,8 @@ module Creditsafe
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
+
# rubocop:disable Style/RescueStandardError
|
81
|
+
# rubocop:disable Metrics/MethodLength
|
80
82
|
def invoke_soap(message_type, message)
|
81
83
|
started = Time.now
|
82
84
|
notification_payload = { request: message }
|
@@ -92,6 +94,8 @@ module Creditsafe
|
|
92
94
|
publish("creditsafe.#{message_type}", started, Time.now,
|
93
95
|
SecureRandom.hex(10), notification_payload)
|
94
96
|
end
|
97
|
+
# rubocop:enable Metrics/MethodLength
|
98
|
+
# rubocop:enable Style/RescueStandardError
|
95
99
|
|
96
100
|
def publish(*args)
|
97
101
|
ActiveSupport::Notifications.publish(*args)
|
@@ -99,13 +103,15 @@ module Creditsafe
|
|
99
103
|
|
100
104
|
# There's a potential bug in the creditsafe API where they actually return
|
101
105
|
# an HTTP 401 if you're unauthorized, hence the sad special case below
|
106
|
+
#
|
107
|
+
# rubocop:disable Metrics/MethodLength
|
102
108
|
def handle_error(error)
|
103
109
|
case error
|
104
110
|
when Savon::SOAPFault
|
105
111
|
return UnknownApiError.new(error.message)
|
106
112
|
when Savon::HTTPError
|
107
113
|
if error.to_hash[:code] == 401
|
108
|
-
return AccountError.new(
|
114
|
+
return AccountError.new("Unauthorized: invalid credentials")
|
109
115
|
end
|
110
116
|
return UnknownApiError.new(error.message)
|
111
117
|
when Excon::Errors::Error
|
@@ -113,19 +119,21 @@ module Creditsafe
|
|
113
119
|
end
|
114
120
|
error
|
115
121
|
end
|
122
|
+
# rubocop:enable Metrics/MethodLength
|
116
123
|
|
117
124
|
def client
|
118
125
|
@client ||= build_savon_client
|
119
126
|
end
|
120
127
|
|
121
128
|
def auth_header
|
122
|
-
auth_value =
|
123
|
-
{
|
129
|
+
auth_value = "Basic " + Base64.encode64("#{@username}:#{@password}").chomp
|
130
|
+
{ "Authorization" => auth_value }
|
124
131
|
end
|
125
132
|
|
133
|
+
# rubocop:disable Metrics/MethodLength
|
126
134
|
def build_savon_client
|
127
135
|
options = {
|
128
|
-
env_namespace:
|
136
|
+
env_namespace: "soapenv",
|
129
137
|
namespace_identifier: Creditsafe::Namespace::OPER,
|
130
138
|
namespaces: Creditsafe::Namespace::ALL,
|
131
139
|
wsdl: wsdl_path,
|
@@ -134,14 +142,15 @@ module Creditsafe
|
|
134
142
|
adapter: :excon,
|
135
143
|
log: true,
|
136
144
|
log_level: @log_level,
|
137
|
-
pretty_print_xml: true
|
145
|
+
pretty_print_xml: true,
|
138
146
|
}
|
139
147
|
Savon.client(options.merge(@savon_opts))
|
140
148
|
end
|
149
|
+
# rubocop:enable Metrics/MethodLength
|
141
150
|
|
142
151
|
def wsdl_path
|
143
|
-
root_dir = File.join(File.dirname(__FILE__),
|
144
|
-
File.join(root_dir,
|
152
|
+
root_dir = File.join(File.dirname(__FILE__), "..", "..")
|
153
|
+
File.join(root_dir, "data", "creditsafe-#{@environment}.xml")
|
145
154
|
end
|
146
155
|
end
|
147
156
|
end
|
data/lib/creditsafe/errors.rb
CHANGED
@@ -14,16 +14,16 @@ module Creditsafe
|
|
14
14
|
DE: [MATCH_BEGINNING, MATCH_BLOCK, EXACT_VALUE, MATCH_WORDS],
|
15
15
|
FR: [MATCH_BEGINNING, CLOSEST_KEYWORDS, EXACT_VALUE],
|
16
16
|
GB: [MATCH_BEGINNING, MATCH_BLOCK_OR_WORDS, EXACT_VALUE],
|
17
|
-
IE: [MATCH_BEGINNING,
|
17
|
+
IE: [MATCH_BEGINNING, MATCH_BLOCK, MATCH_WORDS],
|
18
18
|
GL: [MATCH_BEGINNING],
|
19
19
|
CH: [CLOSEST_KEYWORDS],
|
20
20
|
LI: [CLOSEST_KEYWORDS],
|
21
21
|
NL: [MATCH_BEGINNING, MATCH_BLOCK_OR_WORDS, MATCH_WORDS],
|
22
|
-
CZ: [
|
22
|
+
CZ: [MATCH_BLOCK_OR_WORDS],
|
23
23
|
IS: [MATCH_BEGINNING],
|
24
24
|
LT: [MATCH_ANY_PARTS],
|
25
25
|
MT: [MATCH_BEGINNING, MATCH_BLOCK],
|
26
|
-
SK: [
|
26
|
+
SK: [MATCH_BLOCK_OR_WORDS],
|
27
27
|
BE: [MATCH_BEGINNING, MATCH_BLOCK_OR_WORDS, MATCH_WORDS],
|
28
28
|
SE: [MATCH_BLOCK_OR_WORDS, CLOSEST_KEYWORDS],
|
29
29
|
PL: [CLOSEST_KEYWORDS],
|
@@ -31,7 +31,7 @@ module Creditsafe
|
|
31
31
|
PT: [MATCH_BEGINNING],
|
32
32
|
LU: [MATCH_BEGINNING, MATCH_BLOCK, EXACT_VALUE],
|
33
33
|
CA: [MATCH_BEGINNING],
|
34
|
-
ES: [CLOSEST_KEYWORDS],
|
34
|
+
ES: [EXACT_VALUE, CLOSEST_KEYWORDS],
|
35
35
|
US: [MATCH_BEGINNING, CLOSEST_KEYWORDS],
|
36
36
|
PR: [MATCH_BEGINNING, CLOSEST_KEYWORDS],
|
37
37
|
AS: [MATCH_BEGINNING, CLOSEST_KEYWORDS],
|
@@ -67,7 +67,7 @@ module Creditsafe
|
|
67
67
|
KM: [MATCH_BLOCK_OR_WORDS],
|
68
68
|
HK: [MATCH_BLOCK_OR_WORDS],
|
69
69
|
AT: [MATCH_WORDS],
|
70
|
-
IT: [CLOSEST_KEYWORDS],
|
70
|
+
IT: [CLOSEST_KEYWORDS, EXACT_VALUE],
|
71
71
|
BR: [CLOSEST_KEYWORDS],
|
72
72
|
HU: [MATCH_BEGINNING],
|
73
73
|
TW: [MATCH_BEGINNING],
|
@@ -109,7 +109,7 @@ module Creditsafe
|
|
109
109
|
AE: [CLOSEST_KEYWORDS],
|
110
110
|
EH: [CLOSEST_KEYWORDS],
|
111
111
|
YE: [CLOSEST_KEYWORDS],
|
112
|
-
GR: [MATCH_BLOCK_OR_WORDS, CLOSEST_KEYWORDS]
|
112
|
+
GR: [MATCH_BLOCK_OR_WORDS, CLOSEST_KEYWORDS],
|
113
113
|
}.freeze
|
114
114
|
end
|
115
115
|
end
|
data/lib/creditsafe/messages.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require "creditsafe/errors"
|
3
4
|
|
4
5
|
module Creditsafe
|
5
6
|
module Messages
|
@@ -14,7 +15,7 @@ module Creditsafe
|
|
14
15
|
@error = error
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
+
alias_method :error?, :error
|
18
19
|
|
19
20
|
def error_class
|
20
21
|
return unless error?
|
@@ -30,28 +31,28 @@ module Creditsafe
|
|
30
31
|
end
|
31
32
|
|
32
33
|
# rubocop:disable Metrics/LineLength
|
33
|
-
NO_RESULTS = Message.new(code:
|
34
|
-
TOO_MANY_RESULTS = Message.new(code:
|
35
|
-
REPORT_UNAVAILABLE = Message.new(code:
|
36
|
-
REPORT_UNAVAILABLE_LEGAL = Message.new(code:
|
37
|
-
REPORT_UNAVAILABLE_ONLINE = Message.new(code:
|
38
|
-
LEGAL_NOTICE = Message.new(code:
|
39
|
-
INVALID_CREDENTIALS = Message.new(code:
|
40
|
-
ACCESS_RESTRICTED = Message.new(code:
|
41
|
-
ACCESS_LIMITS_NEARING = Message.new(code:
|
42
|
-
REPORTBOX_ALMOST_FULL = Message.new(code:
|
43
|
-
REPORTBOX_FULL = Message.new(code:
|
44
|
-
INVALID_REQUEST_XML = Message.new(code:
|
45
|
-
INVALID_OPERATION_PARAMS = Message.new(code:
|
46
|
-
OPERATION_NOT_SUPPORTED = Message.new(code:
|
47
|
-
INVALID_CUSTOM_DATA_SPECIFIED = Message.new(code:
|
48
|
-
CHANGE_NOTIFICATION = Message.new(code:
|
49
|
-
TEMPORARY_SYSTEM_PROBLEM = Message.new(code:
|
50
|
-
ENDPOINT_SHUTDOWN = Message.new(code:
|
51
|
-
UNEXPECTED_INTERNAL_ERROR = Message.new(code:
|
52
|
-
OTHER_ERROR = Message.new(code:
|
53
|
-
DATA_SERVICE_PROBLEMS = Message.new(code:
|
54
|
-
DATA_SERVICE_INVALID_RESPONSE = Message.new(code:
|
34
|
+
NO_RESULTS = Message.new(code: "010101", message: "No results")
|
35
|
+
TOO_MANY_RESULTS = Message.new(code: "010102", message: "Too many results")
|
36
|
+
REPORT_UNAVAILABLE = Message.new(code: "010103", message: "Report unavailable", error: true)
|
37
|
+
REPORT_UNAVAILABLE_LEGAL = Message.new(code: "010104", message: "Report unavailable due to legal causes", error: true)
|
38
|
+
REPORT_UNAVAILABLE_ONLINE = Message.new(code: "010105", message: "Report unavailable online", error: true)
|
39
|
+
LEGAL_NOTICE = Message.new(code: "010106", message: "Legal notice")
|
40
|
+
INVALID_CREDENTIALS = Message.new(code: "020101", message: "Invalid credentials", error: true)
|
41
|
+
ACCESS_RESTRICTED = Message.new(code: "020102", message: "Access restricted", error: true)
|
42
|
+
ACCESS_LIMITS_NEARING = Message.new(code: "020103", message: "Access limits nearing")
|
43
|
+
REPORTBOX_ALMOST_FULL = Message.new(code: "020201", message: "Reportbox almost full", error: true)
|
44
|
+
REPORTBOX_FULL = Message.new(code: "020202", message: "Reportbox full", error: true)
|
45
|
+
INVALID_REQUEST_XML = Message.new(code: "030101", message: "Invalid request XML", error: true)
|
46
|
+
INVALID_OPERATION_PARAMS = Message.new(code: "030102", message: "Invalid operation parameters", error: true)
|
47
|
+
OPERATION_NOT_SUPPORTED = Message.new(code: "030103", message: "Operation not supported", error: true)
|
48
|
+
INVALID_CUSTOM_DATA_SPECIFIED = Message.new(code: "030104", message: "Invalid custom data specified", error: true)
|
49
|
+
CHANGE_NOTIFICATION = Message.new(code: "030201", message: "Change notification")
|
50
|
+
TEMPORARY_SYSTEM_PROBLEM = Message.new(code: "030202", message: "Temporary system problem", error: true)
|
51
|
+
ENDPOINT_SHUTDOWN = Message.new(code: "030203", message: "Endpoint shutdown", error: true)
|
52
|
+
UNEXPECTED_INTERNAL_ERROR = Message.new(code: "040101", message: "Unexpected internal error", error: true)
|
53
|
+
OTHER_ERROR = Message.new(code: "040102", message: "Other", error: true)
|
54
|
+
DATA_SERVICE_PROBLEMS = Message.new(code: "040103", message: "Data service access problems", error: true)
|
55
|
+
DATA_SERVICE_INVALID_RESPONSE = Message.new(code: "040104", message: "Data service invalid response", error: true)
|
55
56
|
# rubocop:enable Metrics/LineLength
|
56
57
|
|
57
58
|
ALL = [
|
@@ -76,18 +77,18 @@ module Creditsafe
|
|
76
77
|
UNEXPECTED_INTERNAL_ERROR,
|
77
78
|
OTHER_ERROR,
|
78
79
|
DATA_SERVICE_PROBLEMS,
|
79
|
-
DATA_SERVICE_INVALID_RESPONSE
|
80
|
+
DATA_SERVICE_INVALID_RESPONSE,
|
80
81
|
].freeze
|
81
82
|
|
82
83
|
# Creditsafe documentation shows a 6 digit error code, however their API
|
83
84
|
# strips the leading 0. To comply with the docs, we pad the API code here to
|
84
85
|
# ensure we find the right match
|
85
86
|
def self.for_code(code)
|
86
|
-
padded_code = code.rjust(6,
|
87
|
+
padded_code = code.rjust(6, "0")
|
87
88
|
message = ALL.find { |msg| msg.code == padded_code }
|
88
89
|
|
89
90
|
if message.nil?
|
90
|
-
message = Message.new(code: code, message:
|
91
|
+
message = Message.new(code: code, message: "Unknown error", error: true)
|
91
92
|
end
|
92
93
|
|
93
94
|
message
|
data/lib/creditsafe/namespace.rb
CHANGED
@@ -2,19 +2,19 @@
|
|
2
2
|
|
3
3
|
module Creditsafe
|
4
4
|
module Namespace
|
5
|
-
OPER =
|
6
|
-
OPER_VAL =
|
5
|
+
OPER = "oper"
|
6
|
+
OPER_VAL = "http://www.creditsafe.com/globaldata/operations"
|
7
7
|
|
8
|
-
DAT =
|
9
|
-
DAT_VAL =
|
8
|
+
DAT = "dat"
|
9
|
+
DAT_VAL = "http://www.creditsafe.com/globaldata/datatypes"
|
10
10
|
|
11
|
-
CRED =
|
12
|
-
CRED_VAL =
|
11
|
+
CRED = "cred"
|
12
|
+
CRED_VAL = "http://schemas.datacontract.org/2004/07/Creditsafe.GlobalData"
|
13
13
|
|
14
14
|
ALL = {
|
15
15
|
"xmlns:#{Creditsafe::Namespace::OPER}" => Creditsafe::Namespace::OPER_VAL,
|
16
16
|
"xmlns:#{Creditsafe::Namespace::DAT}" => Creditsafe::Namespace::DAT_VAL,
|
17
|
-
"xmlns:#{Creditsafe::Namespace::CRED}" => Creditsafe::Namespace::CRED_VAL
|
17
|
+
"xmlns:#{Creditsafe::Namespace::CRED}" => Creditsafe::Namespace::CRED_VAL,
|
18
18
|
}.freeze
|
19
19
|
end
|
20
20
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "creditsafe/namespace"
|
4
4
|
|
5
5
|
module Creditsafe
|
6
6
|
module Request
|
@@ -10,23 +10,25 @@ module Creditsafe
|
|
10
10
|
@custom_data = custom_data
|
11
11
|
end
|
12
12
|
|
13
|
+
# rubocop:disable Metrics/MethodLength
|
13
14
|
def message
|
14
15
|
message = {
|
15
16
|
"#{Creditsafe::Namespace::OPER}:companyId" => company_id.to_s,
|
16
|
-
"#{Creditsafe::Namespace::OPER}:reportType" =>
|
17
|
-
"#{Creditsafe::Namespace::OPER}:language" => "EN"
|
17
|
+
"#{Creditsafe::Namespace::OPER}:reportType" => "Full",
|
18
|
+
"#{Creditsafe::Namespace::OPER}:language" => "EN",
|
18
19
|
}
|
19
20
|
|
20
21
|
unless custom_data.nil?
|
21
22
|
message["#{Creditsafe::Namespace::OPER}:customData"] = {
|
22
23
|
"#{Creditsafe::Namespace::DAT}:Entries" => {
|
23
|
-
"#{Creditsafe::Namespace::DAT}:Entry" => custom_data_entries
|
24
|
-
}
|
24
|
+
"#{Creditsafe::Namespace::DAT}:Entry" => custom_data_entries,
|
25
|
+
},
|
25
26
|
}
|
26
27
|
end
|
27
28
|
|
28
29
|
message
|
29
30
|
end
|
31
|
+
# rubocop:enable Metrics/MethodLength
|
30
32
|
|
31
33
|
private
|
32
34
|
|