responsys-api 0.2.6 → 0.2.7
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/lib/responsys/helper.rb +32 -7
- data/responsys-api.gemspec +1 -1
- data/spec/fixtures/soap_fault.xml +8 -0
- data/spec/helper_spec.rb +34 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84547cf31f537da62287c2dcb67e45d3ca767323
|
4
|
+
data.tar.gz: 465b7023b7b30abf01d29392b76699d2666927d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 063b69c6e94269e0bd9b91cc2c3898ad8d5f94b531424b893c0a3f5adbbb953c5ee016b01379acecdb61bc1c9ad71875177eb2d4d6f5dbddb834870e238cecf2
|
7
|
+
data.tar.gz: d21ec3c1160d93e4197eb1867bd7ad54ab52f8ab999acace83c1bf236b2f869c65b7e9c74b3fc5416b959aefe50e943c5cd66526e093093029301a5c3886633a
|
data/lib/responsys/helper.rb
CHANGED
@@ -64,13 +64,13 @@ module Responsys
|
|
64
64
|
|
65
65
|
def self.format_response_with_errors(error)
|
66
66
|
error_response = { status: "failure" }
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
67
|
+
case error
|
68
|
+
when Savon::SOAPFault
|
69
|
+
error_response.merge!(format_soap_fault(error))
|
70
|
+
when Savon::HTTPError
|
71
|
+
error_response.merge!(format_http_error(error))
|
72
|
+
else
|
73
|
+
raise error
|
74
74
|
end
|
75
75
|
|
76
76
|
error_response
|
@@ -87,5 +87,30 @@ module Responsys
|
|
87
87
|
I18n.t(key, scope: :responsys_api, locale: :en, default: "Responsys - Unknown message '#{key}'")
|
88
88
|
end
|
89
89
|
end
|
90
|
+
|
91
|
+
class << self
|
92
|
+
private
|
93
|
+
def format_soap_fault(error)
|
94
|
+
error_response = {}
|
95
|
+
if error.to_hash[:fault].has_key?(:detail) and !error.to_hash[:fault][:detail].nil?
|
96
|
+
key = error.to_hash[:fault][:detail].keys[0]
|
97
|
+
error_response[:error] = { http_status_code: error.http.code, code: error.to_hash[:fault][:detail][key][:exception_code], message: error.to_hash[:fault][:detail][key][:exception_message] }
|
98
|
+
error_response[:error][:trace] = error.to_hash[:fault][:detail][:source] if error.to_hash[:fault][:detail][:source]
|
99
|
+
else
|
100
|
+
error_response[:error] = { http_status_code: error.http.code, code: error.to_hash[:fault][:faultcode], message: error.to_hash[:fault][:faultstring] }
|
101
|
+
end
|
102
|
+
error_response
|
103
|
+
end
|
104
|
+
|
105
|
+
def format_http_error(error)
|
106
|
+
{
|
107
|
+
error: {
|
108
|
+
http_status_code: error.to_hash[:code],
|
109
|
+
message: error.to_hash[:body],
|
110
|
+
}
|
111
|
+
}
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
90
115
|
end
|
91
116
|
end
|
data/responsys-api.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "responsys-api"
|
7
|
-
spec.version = "0.2.
|
7
|
+
spec.version = "0.2.7"
|
8
8
|
spec.authors = ["Dan DeMeyere", "Florian Lorrain", "Morgan Griggs", "Mike Rocco"]
|
9
9
|
spec.email = ["dan@thredup.com", "florian.lorrain@thredup.com", "morgan@thredup.com", "michael.rocco@thredup.com"]
|
10
10
|
spec.description = "A gem to integrate with the Responsys SOAP API"
|
data/spec/helper_spec.rb
CHANGED
@@ -35,6 +35,40 @@ describe Responsys::Helper do
|
|
35
35
|
expect(Responsys::Helper.get_message(message_key))
|
36
36
|
.to eq("Responsys - Unknown message 'member.record_not_found'")
|
37
37
|
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#format_response_with_error' do
|
41
|
+
let(:nori) { Nori.new(:strip_namespaces => true, :convert_tags_to => lambda { |tag| tag.snakecase.to_sym }) }
|
42
|
+
|
43
|
+
it 'will format a Savon::SOAPFault response' do
|
44
|
+
fault_body = File.read File.expand_path "../fixtures/soap_fault.xml", __FILE__
|
45
|
+
http_response = HTTPI::Response.new 500, {}, fault_body
|
46
|
+
soap_fault = Savon::SOAPFault.new http_response, nori
|
47
|
+
|
48
|
+
result = Responsys::Helper.format_response_with_errors(soap_fault)
|
49
|
+
expect(result[:status]).to eq "failure"
|
50
|
+
expect(result[:error][:http_status_code]).to eq 500
|
51
|
+
expect(result[:error][:code]).to eq "soap:Server"
|
52
|
+
expect(result[:error][:message]).to eq "Fault occurred while processing."
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'will format a Savon::HTTPError' do
|
56
|
+
http_response = HTTPI::Response.new 503, {}, "Service unavailable"
|
57
|
+
http_error = Savon::HTTPError.new(http_response)
|
58
|
+
result = Responsys::Helper.format_response_with_errors(http_error)
|
59
|
+
|
60
|
+
expect(result[:status]).to eq "failure"
|
61
|
+
expect(result[:error][:http_status_code]).to eq 503
|
62
|
+
expect(result[:error][:message]).to eq "Service unavailable"
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'will re-raise a unformattable Savon error' do
|
66
|
+
unformattable_error = Savon::InvalidResponseError.new
|
67
|
+
expect{
|
68
|
+
Responsys::Helper.format_response_with_errors(unformattable_error)
|
69
|
+
}.to raise_error(Savon::InvalidResponseError)
|
70
|
+
end
|
38
71
|
|
39
72
|
end
|
73
|
+
|
40
74
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: responsys-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan DeMeyere
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-09-29 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rubyntlm
|
@@ -274,6 +274,7 @@ files:
|
|
274
274
|
- spec/api/table_spec.rb
|
275
275
|
- spec/api_credentials.sample.yml
|
276
276
|
- spec/configuration_spec.rb
|
277
|
+
- spec/fixtures/soap_fault.xml
|
277
278
|
- spec/fixtures/vcr_cassettes/api/campaign/trigger_custom_event_1.yml
|
278
279
|
- spec/fixtures/vcr_cassettes/api/campaign/trigger_custom_event_2.yml
|
279
280
|
- spec/fixtures/vcr_cassettes/api/campaign/trigger_message_1.yml
|
@@ -339,6 +340,7 @@ test_files:
|
|
339
340
|
- spec/api/table_spec.rb
|
340
341
|
- spec/api_credentials.sample.yml
|
341
342
|
- spec/configuration_spec.rb
|
343
|
+
- spec/fixtures/soap_fault.xml
|
342
344
|
- spec/fixtures/vcr_cassettes/api/campaign/trigger_custom_event_1.yml
|
343
345
|
- spec/fixtures/vcr_cassettes/api/campaign/trigger_custom_event_2.yml
|
344
346
|
- spec/fixtures/vcr_cassettes/api/campaign/trigger_message_1.yml
|