gds-api-adapters 14.5.0 → 14.6.0

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.
@@ -21,10 +21,17 @@ module GdsApi
21
21
  end
22
22
  end
23
23
 
24
- class HTTPNotFound < HTTPErrorResponse
24
+ class HTTPClientError < HTTPErrorResponse
25
25
  end
26
26
 
27
- class HTTPGone < HTTPErrorResponse; end
27
+ class HTTPServerError < HTTPErrorResponse
28
+ end
29
+
30
+ class HTTPNotFound < HTTPClientError
31
+ end
32
+
33
+ class HTTPGone < HTTPClientError
34
+ end
28
35
 
29
36
  class NoBearerToken < BaseError; end
30
37
 
@@ -38,5 +45,23 @@ module GdsApi
38
45
  def ignoring_missing(&block)
39
46
  ignoring([HTTPNotFound, HTTPGone], &block)
40
47
  end
48
+
49
+ def build_specific_http_error(error, url, details = nil)
50
+ message = "url: #{url}\n#{error.http_body}"
51
+ code = error.http_code
52
+
53
+ case code
54
+ when 404
55
+ GdsApi::HTTPNotFound.new(code, message, details)
56
+ when 410
57
+ GdsApi::HTTPGone.new(code, message, details)
58
+ when (400..499)
59
+ GdsApi::HTTPClientError.new(code, message, details)
60
+ when (500..599)
61
+ GdsApi::HTTPServerError.new(code, message, details)
62
+ else
63
+ GdsApi::HTTPErrorResponse.new(code, message, details)
64
+ end
65
+ end
41
66
  end
42
67
  end
@@ -109,15 +109,8 @@ module GdsApi
109
109
  private
110
110
  def do_raw_request(method, url, params = nil)
111
111
  response = do_request(method, url, params)
112
-
113
- rescue RestClient::ResourceNotFound => e
114
- raise GdsApi::HTTPNotFound.new(e.http_code, "url: #{url}")
115
-
116
- rescue RestClient::Gone => e
117
- raise GdsApi::HTTPGone.new(e.http_code, "url: #{url}")
118
-
119
112
  rescue RestClient::Exception => e
120
- raise GdsApi::HTTPErrorResponse.new(e.response.code.to_i, "url: #{url}\n#{e.response.body}")
113
+ raise build_specific_http_error(e, url)
121
114
  end
122
115
 
123
116
  # method: the symbolic name of the method to use, e.g. :get, :post
@@ -130,13 +123,6 @@ module GdsApi
130
123
 
131
124
  begin
132
125
  response = do_request_with_cache(method, url, (params.to_json if params), additional_headers)
133
-
134
- rescue RestClient::ResourceNotFound => e
135
- raise GdsApi::HTTPNotFound.new(e.http_code, "url: #{url}")
136
-
137
- rescue RestClient::Gone => e
138
- raise GdsApi::HTTPGone.new(e.http_code, "url: #{url}")
139
-
140
126
  rescue RestClient::Exception => e
141
127
  # Attempt to parse the body as JSON if possible
142
128
  error_details = begin
@@ -144,7 +130,7 @@ module GdsApi
144
130
  rescue JSON::ParserError
145
131
  nil
146
132
  end
147
- raise GdsApi::HTTPErrorResponse.new(e.http_code, "url: #{url}\n#{e.http_body}", error_details)
133
+ raise build_specific_http_error(e, url, error_details)
148
134
  end
149
135
 
150
136
  # If no custom response is given, just instantiate Response
data/lib/gds_api/mapit.rb CHANGED
@@ -8,7 +8,7 @@ class GdsApi::Mapit < GdsApi::Base
8
8
  return Location.new(response) unless response.nil?
9
9
  rescue GdsApi::HTTPErrorResponse => e
10
10
  # allow 400 errors, as they can be invalid postcodes people have entered
11
- raise GdsApi::HTTPErrorResponse.new(e.code) unless e.code == 400
11
+ raise e unless e.code == 400
12
12
  end
13
13
 
14
14
  def areas_for_type(type)
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '14.5.0'
2
+ VERSION = '14.6.0'
3
3
  end
@@ -628,7 +628,7 @@ describe GdsApi::ContentApi do
628
628
  stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
629
629
  to_return(:status => 503, :body => "Gateway timeout")
630
630
 
631
- assert_raises GdsApi::HTTPErrorResponse do
631
+ assert_raises GdsApi::HTTPServerError do
632
632
  @api.business_support_schemes(['foo', 'bar'])
633
633
  end
634
634
  end
@@ -682,7 +682,7 @@ describe GdsApi::ContentApi do
682
682
  stub_request(:get, %r[\A#{@base_api_url}/licences]).
683
683
  to_return(:status => [503, "Service temporarily unabailable"])
684
684
 
685
- assert_raises GdsApi::HTTPErrorResponse do
685
+ assert_raises GdsApi::HTTPServerError do
686
686
  @api.licences_for_ids([123,124])
687
687
  end
688
688
  end
@@ -4,7 +4,7 @@ require "gds_api/fact_cave"
4
4
  describe GdsApi::FactCave do
5
5
  it "should raise an exception if the service at the fact cave URI returns a 500" do
6
6
  stub_request(:get, /example.com\/facts/).to_return(status: [500, "Internal Server Error"])
7
- assert_raises(GdsApi::HTTPErrorResponse) do
7
+ assert_raises(GdsApi::HTTPServerError) do
8
8
  GdsApi::FactCave.new("http://example.com").fact("foo")
9
9
  end
10
10
  end
@@ -22,7 +22,7 @@ describe GdsApi::FactCave do
22
22
  end
23
23
 
24
24
  it "should return the fact deserialized from json" do
25
- fact_cave_result = {"id" => "vat-rate", "title" => "VAT rate", "details" => {
25
+ fact_cave_result = {"id" => "vat-rate", "title" => "VAT rate", "details" => {
26
26
  "value" => "20%", "description" => "Value Added Tax rate" }}
27
27
  stub_request(:get, "http://example.com/facts/vat-rate").to_return(body: fact_cave_result.to_json)
28
28
  result = GdsApi::FactCave.new("http://example.com").fact("vat-rate")
@@ -341,7 +341,7 @@ class JsonClientTest < MiniTest::Spec
341
341
  def test_get_should_raise_error_if_non_404_non_410_error_code_returned_from_endpoint
342
342
  url = "http://some.endpoint/some.json"
343
343
  stub_request(:get, url).to_return(:body => "{}", :status => 500)
344
- assert_raises GdsApi::HTTPErrorResponse do
344
+ assert_raises GdsApi::HTTPServerError do
345
345
  @client.get_json(url)
346
346
  end
347
347
  end
@@ -452,7 +452,7 @@ class JsonClientTest < MiniTest::Spec
452
452
  def test_post_should_raise_error_if_non_404_error_code_returned_from_endpoint
453
453
  url = "http://some.endpoint/some.json"
454
454
  stub_request(:post, url).to_return(:body => "{}", :status => 500)
455
- assert_raises GdsApi::HTTPErrorResponse do
455
+ assert_raises GdsApi::HTTPServerError do
456
456
  @client.post_json(url, {})
457
457
  end
458
458
  end
@@ -479,7 +479,7 @@ class JsonClientTest < MiniTest::Spec
479
479
  def test_put_should_raise_error_if_non_404_error_code_returned_from_endpoint
480
480
  url = "http://some.endpoint/some.json"
481
481
  stub_request(:put, url).to_return(:body => "{}", :status => 500)
482
- assert_raises GdsApi::HTTPErrorResponse do
482
+ assert_raises GdsApi::HTTPServerError do
483
483
  @client.put_json(url, {})
484
484
  end
485
485
  end
@@ -690,7 +690,7 @@ class JsonClientTest < MiniTest::Spec
690
690
  url = "http://some.endpoint/some.json"
691
691
  stub_request(:post, url).to_return(:body => '', :status => 500)
692
692
 
693
- assert_raises GdsApi::HTTPErrorResponse do
693
+ assert_raises GdsApi::HTTPServerError do
694
694
  @client.post_multipart("http://some.endpoint/some.json", {"a" => "123"})
695
695
  end
696
696
  end
@@ -719,7 +719,7 @@ class JsonClientTest < MiniTest::Spec
719
719
  url = "http://some.endpoint/some.json"
720
720
  stub_request(:put, url).to_return(:body => '', :status => 500)
721
721
 
722
- assert_raises GdsApi::HTTPErrorResponse do
722
+ assert_raises GdsApi::HTTPServerError do
723
723
  @client.put_multipart("http://some.endpoint/some.json", {"a" => "123"})
724
724
  end
725
725
  end
@@ -183,7 +183,7 @@ EOS
183
183
  def test_should_raise_exception_on_api_error
184
184
  licence_returns_error("866-5-1")
185
185
 
186
- assert_raises GdsApi::HTTPErrorResponse do
186
+ assert_raises GdsApi::HTTPServerError do
187
187
  api.details_for_licence("866-5-1")
188
188
  end
189
189
  end
@@ -42,7 +42,7 @@ describe GdsApi::PerformancePlatform::DataIn do
42
42
 
43
43
  it "throws an exception when the support app isn't available" do
44
44
  stub_pp_isnt_available
45
- assert_raises(GdsApi::HTTPErrorResponse) { @api.submit_service_feedback_day_aggregate("doesnt_matter", {}) }
45
+ assert_raises(GdsApi::HTTPServerError) { @api.submit_service_feedback_day_aggregate("doesnt_matter", {}) }
46
46
  end
47
47
 
48
48
  it "throws an exception when the the bucket for that slug hasn't been defined" do
@@ -10,7 +10,7 @@ describe GdsApi::Rummager do
10
10
 
11
11
  it "should raise an exception if the service at the search URI returns a 500" do
12
12
  stub_request(:get, /example.com\/search/).to_return(status: [500, "Internal Server Error"])
13
- assert_raises(GdsApi::HTTPErrorResponse) do
13
+ assert_raises(GdsApi::HTTPServerError) do
14
14
  GdsApi::Rummager.new("http://example.com").search("query")
15
15
  end
16
16
  end
@@ -87,7 +87,7 @@ describe GdsApi::Rummager do
87
87
 
88
88
  it "#advanced_search should raise an exception if the service at the search URI returns a 500" do
89
89
  stub_request(:get, /example.com\/advanced_search/).to_return(status: [500, "Internal Server Error"])
90
- assert_raises(GdsApi::HTTPErrorResponse) do
90
+ assert_raises(GdsApi::HTTPServerError) do
91
91
  GdsApi::Rummager.new("http://example.com").advanced_search({keywords: "query"})
92
92
  end
93
93
  end
@@ -145,7 +145,7 @@ describe GdsApi::Rummager do
145
145
 
146
146
  it "#unified_search should raise an exception if the service at the search URI returns a 500" do
147
147
  stub_request(:get, /example.com\/unified_search.json/).to_return(status: [500, "Internal Server Error"])
148
- assert_raises(GdsApi::HTTPErrorResponse) do
148
+ assert_raises(GdsApi::HTTPServerError) do
149
149
  GdsApi::Rummager.new("http://example.com").unified_search(q: "query")
150
150
  end
151
151
  end
@@ -162,7 +162,7 @@ describe GdsApi::Rummager do
162
162
  status: [400, "Bad Request"],
163
163
  body: %q("error":"Filtering by \"coffee\" is not allowed"),
164
164
  )
165
- assert_raises(GdsApi::HTTPErrorResponse) do
165
+ assert_raises(GdsApi::HTTPClientError) do
166
166
  GdsApi::Rummager.new("http://example.com").unified_search(q: "query", filter_coffee: "tea")
167
167
  end
168
168
  end
@@ -172,7 +172,7 @@ describe GdsApi::Rummager do
172
172
  status: [422, "Bad Request"],
173
173
  body: %q("error":"Filtering by \"coffee\" is not allowed"),
174
174
  )
175
- assert_raises(GdsApi::HTTPErrorResponse) do
175
+ assert_raises(GdsApi::HTTPClientError) do
176
176
  GdsApi::Rummager.new("http://example.com").unified_search(q: "query", filter_coffee: "tea")
177
177
  end
178
178
  end
@@ -25,6 +25,6 @@ describe GdsApi::SupportApi do
25
25
  it "throws an exception when the support app isn't available" do
26
26
  support_api_isnt_available
27
27
 
28
- assert_raises(GdsApi::HTTPErrorResponse) { @api.create_service_feedback({}) }
28
+ assert_raises(GdsApi::HTTPServerError) { @api.create_service_feedback({}) }
29
29
  end
30
30
  end
data/test/support_test.rb CHANGED
@@ -25,7 +25,7 @@ describe GdsApi::Support do
25
25
  it "throws an exception when the support app isn't available" do
26
26
  support_isnt_available
27
27
 
28
- assert_raises(GdsApi::HTTPErrorResponse) { @api.create_foi_request({}) }
28
+ assert_raises(GdsApi::HTTPServerError) { @api.create_foi_request({}) }
29
29
  end
30
30
 
31
31
  it "can report a problem" do
@@ -67,7 +67,7 @@ describe GdsApi::Support do
67
67
  it "throws an exception when the support app isn't available" do
68
68
  support_isnt_available
69
69
 
70
- assert_raises(GdsApi::HTTPErrorResponse) { @api.create_problem_report({}) }
70
+ assert_raises(GdsApi::HTTPServerError) { @api.create_problem_report({}) }
71
71
  end
72
72
 
73
73
  it "can pass service feedback" do
@@ -85,7 +85,7 @@ describe GdsApi::Support do
85
85
  it "throws an exception when the support app isn't available" do
86
86
  support_isnt_available
87
87
 
88
- assert_raises(GdsApi::HTTPErrorResponse) { @api.create_service_feedback({}) }
88
+ assert_raises(GdsApi::HTTPServerError) { @api.create_service_feedback({}) }
89
89
  end
90
90
 
91
91
  it "gets the correct feedback URL" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.5.0
4
+ version: 14.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-12 00:00:00.000000000 Z
12
+ date: 2014-09-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plek
16
- requirement: &12009420 !ruby/object:Gem::Requirement
16
+ requirement: &9869000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *12009420
24
+ version_requirements: *9869000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: null_logger
27
- requirement: &12008540 !ruby/object:Gem::Requirement
27
+ requirement: &9868020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *12008540
35
+ version_requirements: *9868020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: link_header
38
- requirement: &12007360 !ruby/object:Gem::Requirement
38
+ requirement: &9867040 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *12007360
46
+ version_requirements: *9867040
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: lrucache
49
- requirement: &12006380 !ruby/object:Gem::Requirement
49
+ requirement: &9866000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.1.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *12006380
57
+ version_requirements: *9866000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rest-client
60
- requirement: &12003620 !ruby/object:Gem::Requirement
60
+ requirement: &9863120 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *12003620
68
+ version_requirements: *9863120
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack-cache
71
- requirement: &12003060 !ruby/object:Gem::Requirement
71
+ requirement: &9862600 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *12003060
79
+ version_requirements: *9862600
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rdoc
82
- requirement: &12013840 !ruby/object:Gem::Requirement
82
+ requirement: &9874660 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - =
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '3.12'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *12013840
90
+ version_requirements: *9874660
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rake
93
- requirement: &12043140 !ruby/object:Gem::Requirement
93
+ requirement: &9871020 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.9.2.2
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *12043140
101
+ version_requirements: *9871020
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: webmock
104
- requirement: &12042300 !ruby/object:Gem::Requirement
104
+ requirement: &9869460 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '1.8'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *12042300
112
+ version_requirements: *9869460
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: mocha
115
- requirement: &12041580 !ruby/object:Gem::Requirement
115
+ requirement: &9902240 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 0.12.4
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *12041580
123
+ version_requirements: *9902240
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: minitest
126
- requirement: &12040900 !ruby/object:Gem::Requirement
126
+ requirement: &9901480 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 3.4.0
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *12040900
134
+ version_requirements: *9901480
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rack
137
- requirement: &12040220 !ruby/object:Gem::Requirement
137
+ requirement: &9901000 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *12040220
145
+ version_requirements: *9901000
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: rack-test
148
- requirement: &12039660 !ruby/object:Gem::Requirement
148
+ requirement: &9900100 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ! '>='
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: '0'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *12039660
156
+ version_requirements: *9900100
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: simplecov
159
- requirement: &12037700 !ruby/object:Gem::Requirement
159
+ requirement: &9897660 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ~>
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: 0.5.4
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *12037700
167
+ version_requirements: *9897660
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: simplecov-rcov
170
- requirement: &12051840 !ruby/object:Gem::Requirement
170
+ requirement: &9911680 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ! '>='
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: '0'
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *12051840
178
+ version_requirements: *9911680
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: gem_publisher
181
- requirement: &12050540 !ruby/object:Gem::Requirement
181
+ requirement: &9910020 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ~>
@@ -186,10 +186,10 @@ dependencies:
186
186
  version: 1.1.1
187
187
  type: :development
188
188
  prerelease: false
189
- version_requirements: *12050540
189
+ version_requirements: *9910020
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: timecop
192
- requirement: &12048920 !ruby/object:Gem::Requirement
192
+ requirement: &9908540 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ~>
@@ -197,7 +197,7 @@ dependencies:
197
197
  version: 0.5.1
198
198
  type: :development
199
199
  prerelease: false
200
- version_requirements: *12048920
200
+ version_requirements: *9908540
201
201
  description: A set of adapters providing easy access to the GDS GOV.UK APIs
202
202
  email:
203
203
  - jystewart@gmail.com
@@ -328,7 +328,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
328
328
  version: '0'
329
329
  segments:
330
330
  - 0
331
- hash: -3837904856260471642
331
+ hash: -3268475085695861388
332
332
  required_rubygems_version: !ruby/object:Gem::Requirement
333
333
  none: false
334
334
  requirements:
@@ -337,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
337
  version: '0'
338
338
  segments:
339
339
  - 0
340
- hash: -3837904856260471642
340
+ hash: -3268475085695861388
341
341
  requirements: []
342
342
  rubyforge_project:
343
343
  rubygems_version: 1.8.11