gds-api-adapters 38.0.0 → 38.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -5
  3. data/lib/gds_api/asset_manager.rb +7 -7
  4. data/lib/gds_api/base.rb +13 -11
  5. data/lib/gds_api/business_support_api.rb +3 -4
  6. data/lib/gds_api/content_api.rb +31 -44
  7. data/lib/gds_api/content_store.rb +2 -3
  8. data/lib/gds_api/email_alert_api.rb +6 -7
  9. data/lib/gds_api/exceptions.rb +4 -1
  10. data/lib/gds_api/gov_uk_delivery.rb +9 -8
  11. data/lib/gds_api/govuk_headers.rb +1 -1
  12. data/lib/gds_api/imminence.rb +9 -10
  13. data/lib/gds_api/json_client.rb +21 -34
  14. data/lib/gds_api/licence_application.rb +2 -2
  15. data/lib/gds_api/list_response.rb +7 -10
  16. data/lib/gds_api/local_links_manager.rb +1 -1
  17. data/lib/gds_api/mapit.rb +5 -6
  18. data/lib/gds_api/middleware/govuk_header_sniffer.rb +1 -1
  19. data/lib/gds_api/need_api.rb +7 -8
  20. data/lib/gds_api/null_cache.rb +2 -2
  21. data/lib/gds_api/organisations.rb +2 -2
  22. data/lib/gds_api/panopticon.rb +11 -11
  23. data/lib/gds_api/performance_platform/data_in.rb +4 -4
  24. data/lib/gds_api/performance_platform/data_out.rb +1 -1
  25. data/lib/gds_api/publishing_api.rb +4 -5
  26. data/lib/gds_api/publishing_api/special_route_publisher.rb +5 -3
  27. data/lib/gds_api/publishing_api_v2.rb +8 -16
  28. data/lib/gds_api/response.rb +2 -5
  29. data/lib/gds_api/router.rb +18 -9
  30. data/lib/gds_api/rummager.rb +6 -7
  31. data/lib/gds_api/support.rb +7 -6
  32. data/lib/gds_api/support_api.rb +14 -14
  33. data/lib/gds_api/test_helpers/asset_manager.rb +3 -6
  34. data/lib/gds_api/test_helpers/business_support_api.rb +4 -4
  35. data/lib/gds_api/test_helpers/business_support_helper.rb +9 -8
  36. data/lib/gds_api/test_helpers/common_responses.rb +10 -12
  37. data/lib/gds_api/test_helpers/content_api.rb +23 -23
  38. data/lib/gds_api/test_helpers/content_api/artefact_stub.rb +13 -12
  39. data/lib/gds_api/test_helpers/content_item_helpers.rb +4 -4
  40. data/lib/gds_api/test_helpers/content_store.rb +3 -3
  41. data/lib/gds_api/test_helpers/email_alert_api.rb +8 -10
  42. data/lib/gds_api/test_helpers/gov_uk_delivery.rb +0 -1
  43. data/lib/gds_api/test_helpers/imminence.rb +4 -4
  44. data/lib/gds_api/test_helpers/intent_helpers.rb +0 -2
  45. data/lib/gds_api/test_helpers/local_links_manager.rb +12 -13
  46. data/lib/gds_api/test_helpers/mapit.rb +14 -15
  47. data/lib/gds_api/test_helpers/need_api.rb +4 -4
  48. data/lib/gds_api/test_helpers/organisations.rb +13 -15
  49. data/lib/gds_api/test_helpers/panopticon.rb +6 -6
  50. data/lib/gds_api/test_helpers/performance_platform/data_in.rb +8 -8
  51. data/lib/gds_api/test_helpers/publishing_api.rb +19 -20
  52. data/lib/gds_api/test_helpers/publishing_api_v2.rb +13 -13
  53. data/lib/gds_api/test_helpers/router.rb +5 -5
  54. data/lib/gds_api/test_helpers/rummager.rb +5 -4
  55. data/lib/gds_api/test_helpers/support.rb +11 -11
  56. data/lib/gds_api/test_helpers/support_api.rb +14 -14
  57. data/lib/gds_api/test_helpers/whitehall_admin_api.rb +1 -1
  58. data/lib/gds_api/test_helpers/worldwide.rb +16 -19
  59. data/lib/gds_api/version.rb +1 -1
  60. data/lib/gds_api/worldwide.rb +4 -4
  61. data/test/asset_manager_test.rb +6 -6
  62. data/test/business_support_api_test.rb +9 -10
  63. data/test/content_api_test.rb +81 -83
  64. data/test/email_alert_api_test.rb +3 -5
  65. data/test/gds_api_base_test.rb +9 -10
  66. data/test/gov_uk_delivery_test.rb +4 -6
  67. data/test/imminence_api_test.rb +7 -9
  68. data/test/json_client_test.rb +71 -64
  69. data/test/licence_application_api_test.rb +5 -7
  70. data/test/list_response_test.rb +27 -32
  71. data/test/mapit_test.rb +7 -9
  72. data/test/middleware/govuk_header_sniffer_test.rb +1 -1
  73. data/test/need_api_test.rb +8 -8
  74. data/test/organisations_api_test.rb +2 -2
  75. data/test/panopticon_registerer_test.rb +10 -10
  76. data/test/panopticon_test.rb +5 -5
  77. data/test/pp_data_in_test.rb +3 -3
  78. data/test/publishing_api_test.rb +2 -6
  79. data/test/publishing_api_v2_test.rb +40 -50
  80. data/test/response_test.rb +21 -22
  81. data/test/router_test.rb +78 -80
  82. data/test/rummager_test.rb +14 -14
  83. data/test/support_api_test.rb +13 -13
  84. data/test/support_test.rb +15 -16
  85. data/test/test_helper.rb +1 -1
  86. data/test/test_helpers/email_alert_api_test.rb +3 -3
  87. data/test/test_helpers/pact_helper.rb +1 -1
  88. data/test/test_helpers/panopticon_test.rb +1 -1
  89. data/test/test_helpers/publishing_api_test.rb +7 -7
  90. data/test/test_helpers/publishing_api_v2_test.rb +5 -9
  91. data/test/worldwide_api_test.rb +3 -3
  92. metadata +2 -3
  93. data/lib/gds_api/core-ext/openstruct.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23123cc90f6e6077cdf5a7de6e74d907edc342ff
4
- data.tar.gz: ee93d8020f7a0fe4ed2e5423ba74b0aae2fd1ba5
3
+ metadata.gz: 3cb1959cc394a5171ec4c09c0b3f5b1a39dde285
4
+ data.tar.gz: d025956a6c6d34a8e0d68e92c6d0bb75ec5cdcc3
5
5
  SHA512:
6
- metadata.gz: d3c79f7ac64677d81e32ce74c4d902f0c20df897a64d5f707cafb8e4277a65d837cd39423b00b234e521693e56e3bf99ab25279ecf35ab1986c8869314df7faf
7
- data.tar.gz: 0366d6b00750732521a469f260bac9323698f7b6d14986c86267e44adbe63a7d7f726728c4c324d14c141b87e8e50f2cc3ac40bb26a1ba7eda9fe803a38b84ef
6
+ metadata.gz: e24a262a3fceb9f36fb7be05f6cef07d05d8ae64a2c77d70e9ca1dbec1aa6c89df9d1bc5035816c3ec7565328de683bab04cf19e555f9cfabe546c36e00f43a2
7
+ data.tar.gz: efcd72026df90795fb2b8b1edb1d8bdd55a7fa5d5ddf0ce3c69d545edec36ff78f26ef78681acefd9e4c249b881d69961b42b47a7dcb40126aef64e9f62f98d4
data/Rakefile CHANGED
@@ -14,23 +14,23 @@ Rake::TestTask.new("test") do |t|
14
14
  t.test_files = FileList["test/**/*_test.rb"]
15
15
  t.verbose = true
16
16
  end
17
- task :default => :test
17
+ task default: :test
18
18
 
19
19
  require 'pact_broker/client/tasks'
20
20
 
21
21
  def configure_pact_broker_location(task)
22
22
  task.pact_broker_base_url = ENV.fetch("PACT_BROKER_BASE_URL")
23
23
  if ENV['PACT_BROKER_USERNAME']
24
- task.pact_broker_basic_auth = { username: ENV['PACT_BROKER_USERNAME'], password: ENV['PACT_BROKER_PASSWORD']}
24
+ task.pact_broker_basic_auth = { username: ENV['PACT_BROKER_USERNAME'], password: ENV['PACT_BROKER_PASSWORD'] }
25
25
  end
26
26
  end
27
27
 
28
- PactBroker::Client::PublicationTask.new("branch") do | task |
28
+ PactBroker::Client::PublicationTask.new("branch") do |task|
29
29
  task.consumer_version = ENV.fetch("PACT_TARGET_BRANCH")
30
30
  configure_pact_broker_location(task)
31
31
  end
32
32
 
33
- PactBroker::Client::PublicationTask.new("released_version") do | task |
33
+ PactBroker::Client::PublicationTask.new("released_version") do |task|
34
34
  require 'gds_api/version'
35
35
  task.consumer_version = GdsApi::VERSION
36
36
  configure_pact_broker_location(task)
@@ -43,7 +43,7 @@ end
43
43
 
44
44
  require "gem_publisher"
45
45
  desc "Publish gem to rubygems.org if necessary"
46
- task :publish_gem do |t|
46
+ task :publish_gem do |_t|
47
47
  gem = GemPublisher.publish_if_updated("gds-api-adapters.gemspec", :rubygems)
48
48
  if gem
49
49
  puts "Published #{gem}"
@@ -3,7 +3,6 @@ require_relative 'exceptions'
3
3
 
4
4
  # @api documented
5
5
  class GdsApi::AssetManager < GdsApi::Base
6
-
7
6
  # Creates an asset given a hash with one +file+ attribute
8
7
  #
9
8
  # Makes a +POST+ request to the asset manager api to create an asset.
@@ -45,7 +44,7 @@ class GdsApi::AssetManager < GdsApi::Base
45
44
  # response = asset_manager.create_asset(file: params[:file])
46
45
  # response['content_type'] #=> "image/jpeg"
47
46
  def create_asset(asset)
48
- post_multipart("#{base_url}/assets", { :asset => asset })
47
+ post_multipart("#{base_url}/assets", asset: asset)
49
48
  end
50
49
 
51
50
  # Updates an asset given a hash with one +file+ attribute
@@ -78,7 +77,7 @@ class GdsApi::AssetManager < GdsApi::Base
78
77
  # uuid = '594602dd-75b3-4e6f-b5d1-cacf8c4d4164'
79
78
  # asset_manager.update_asset(uuid, file: File.new('image.jpg', 'r'))
80
79
  def update_asset(id, asset)
81
- put_multipart("#{base_url}/assets/#{id}", { :asset => asset })
80
+ put_multipart("#{base_url}/assets/#{id}", asset: asset)
82
81
  end
83
82
 
84
83
  # Fetches an asset given the id
@@ -138,8 +137,9 @@ class GdsApi::AssetManager < GdsApi::Base
138
137
  post_json("#{base_url}/assets/#{id}/restore")
139
138
  end
140
139
 
141
- private
142
- def base_url
143
- endpoint
144
- end
140
+ private
141
+
142
+ def base_url
143
+ endpoint
144
+ end
145
145
  end
data/lib/gds_api/base.rb CHANGED
@@ -18,11 +18,12 @@ class GdsApi::Base
18
18
  GdsApi::JsonClient.new(options)
19
19
  end
20
20
 
21
- def_delegators :client, :get_json, :get_json!,
22
- :post_json, :post_json!,
23
- :put_json, :put_json!,
24
- :patch_json, :patch_json!,
25
- :delete_json, :delete_json!, :delete_json_with_params!,
21
+ def_delegators :client, :get_json,
22
+ :post_json,
23
+ :put_json,
24
+ :patch_json,
25
+ :delete_json,
26
+ :delete_json_with_params!,
26
27
  :get_raw, :get_raw!,
27
28
  :put_multipart,
28
29
  :post_multipart
@@ -38,7 +39,7 @@ class GdsApi::Base
38
39
  @logger ||= NullLogger.instance
39
40
  end
40
41
 
41
- def initialize(endpoint_url, options={})
42
+ def initialize(endpoint_url, options = {})
42
43
  options[:endpoint_url] = endpoint_url
43
44
  raise InvalidAPIURL unless endpoint_url =~ URI::regexp
44
45
  base_options = { logger: self.class.logger }
@@ -47,17 +48,18 @@ class GdsApi::Base
47
48
  self.endpoint = options[:endpoint_url]
48
49
  end
49
50
 
50
- def url_for_slug(slug, options={})
51
+ def url_for_slug(slug, options = {})
51
52
  "#{base_url}/#{slug}.json#{query_string(options)}"
52
53
  end
53
54
 
54
- def get_list!(url)
55
- get_json!(url) do |r|
55
+ def get_list(url)
56
+ get_json(url) do |r|
56
57
  GdsApi::ListResponse.new(r, self)
57
58
  end
58
59
  end
59
60
 
60
61
  private
62
+
61
63
  attr_accessor :endpoint
62
64
 
63
65
  def query_string(params)
@@ -67,13 +69,13 @@ private
67
69
  case value
68
70
  when Array
69
71
  value.map { |v|
70
- "#{CGI.escape(key.to_s+'[]')}=#{CGI.escape(v.to_s)}"
72
+ "#{CGI.escape(key.to_s + '[]')}=#{CGI.escape(v.to_s)}"
71
73
  }
72
74
  else
73
75
  "#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}"
74
76
  end
75
77
  }.flatten
76
78
 
77
- "?#{param_pairs.join("&")}"
79
+ "?#{param_pairs.join('&')}"
78
80
  end
79
81
  end
@@ -3,16 +3,15 @@ require_relative 'exceptions'
3
3
  require_relative 'list_response'
4
4
 
5
5
  class GdsApi::BusinessSupportApi < GdsApi::Base
6
-
7
6
  def schemes(options = {})
8
- get_list!(url_for_slug('business-support-schemes', options))
7
+ get_list(url_for_slug('business-support-schemes', options))
9
8
  end
10
9
 
11
10
  def scheme(slug)
12
- get_json!(url_for_slug("business-support-schemes/#{slug}"))
11
+ get_json(url_for_slug("business-support-schemes/#{slug}"))
13
12
  end
14
13
 
15
- private
14
+ private
16
15
 
17
16
  def base_url
18
17
  endpoint
@@ -3,7 +3,6 @@ require_relative 'exceptions'
3
3
  require_relative 'list_response'
4
4
 
5
5
  class GdsApi::ContentApi < GdsApi::Base
6
-
7
6
  def initialize(endpoint_url, options = {})
8
7
  # If the `web_urls_relative_to` option is given, the adapter will convert
9
8
  # any `web_url` values to relative URLs if they are from the same host.
@@ -26,7 +25,7 @@ class GdsApi::ContentApi < GdsApi::Base
26
25
  child_tags("section", parent_tag)
27
26
  end
28
27
 
29
- def tags(tag_type, options={})
28
+ def tags(tag_type, options = {})
30
29
  params = [
31
30
  "type=#{CGI.escape(tag_type)}"
32
31
  ]
@@ -34,24 +33,24 @@ class GdsApi::ContentApi < GdsApi::Base
34
33
  params << "draft=true" if options[:draft]
35
34
  params << "cachebust=#{Time.now.utc.to_i}#{rand(1000)}" if options[:bust_cache]
36
35
 
37
- get_list!("#{base_url}/tags.json?#{params.join('&')}")
36
+ get_list("#{base_url}/tags.json?#{params.join('&')}")
38
37
  end
39
38
 
40
39
  def root_tags(tag_type)
41
- get_list!("#{base_url}/tags.json?type=#{CGI.escape(tag_type)}&root_sections=true")
40
+ get_list("#{base_url}/tags.json?type=#{CGI.escape(tag_type)}&root_sections=true")
42
41
  end
43
42
 
44
- def child_tags(tag_type, parent_tag, options={})
43
+ def child_tags(tag_type, parent_tag, options = {})
45
44
  params = [
46
45
  "type=#{CGI.escape(tag_type)}",
47
46
  "parent_id=#{CGI.escape(parent_tag)}",
48
47
  ]
49
48
  params << "sort=#{options[:sort]}" if options.has_key?(:sort)
50
49
 
51
- get_list!("#{base_url}/tags.json?#{params.join('&')}")
50
+ get_list("#{base_url}/tags.json?#{params.join('&')}")
52
51
  end
53
52
 
54
- def tag(tag, tag_type=nil)
53
+ def tag(tag, tag_type = nil)
55
54
  if tag_type.nil?
56
55
  raise "Requests for tags without a tag_type are no longer supported. You probably want a tag_type of 'section'. See https://github.com/alphagov/govuk_content_api/blob/f4c0102a1ae4970be6a440707b89798442f768b9/govuk_content_api.rb#L241-L250"
57
56
  end
@@ -64,16 +63,16 @@ class GdsApi::ContentApi < GdsApi::Base
64
63
  get_list("#{base_url}/for_need/#{CGI.escape(need_id.to_s)}.json")
65
64
  end
66
65
 
67
- def artefact(slug, params={})
66
+ def artefact(slug, params = {})
68
67
  get_json(artefact_url(slug, params))
69
68
  end
70
69
 
71
- def artefact!(slug, params={})
72
- get_json!(artefact_url(slug, params))
70
+ def artefact!(slug, params = {})
71
+ get_json(artefact_url(slug, params))
73
72
  end
74
73
 
75
74
  def artefacts
76
- get_list!("#{base_url}/artefacts.json")
75
+ get_list("#{base_url}/artefacts.json")
77
76
  end
78
77
 
79
78
  def local_authority(snac_code)
@@ -81,11 +80,11 @@ class GdsApi::ContentApi < GdsApi::Base
81
80
  end
82
81
 
83
82
  def local_authorities_by_name(name)
84
- get_json!("#{base_url}/local_authorities.json?name=#{CGI.escape(name)}")
83
+ get_json("#{base_url}/local_authorities.json?name=#{CGI.escape(name)}")
85
84
  end
86
85
 
87
86
  def local_authorities_by_snac_code(snac_code)
88
- get_json!("#{base_url}/local_authorities.json?snac_code=#{CGI.escape(snac_code)}")
87
+ get_json("#{base_url}/local_authorities.json?snac_code=#{CGI.escape(snac_code)}")
89
88
  end
90
89
 
91
90
  def licences_for_ids(ids)
@@ -95,18 +94,12 @@ class GdsApi::ContentApi < GdsApi::Base
95
94
 
96
95
  def business_support_schemes(facets)
97
96
  url = "#{base_url}/business_support_schemes.json"
98
- query = facets.map { |k,v| "#{k}=#{v}" }
97
+ query = facets.map { |k, v| "#{k}=#{v}" }
99
98
  if query.any?
100
- url += "?#{query.join("&")}"
99
+ url += "?#{query.join('&')}"
101
100
  end
102
101
 
103
- get_json!(url)
104
- end
105
-
106
- def get_list!(url)
107
- get_json!(url) { |r|
108
- GdsApi::ListResponse.new(r, self, web_urls_relative_to: @web_urls_relative_to)
109
- }
102
+ get_json(url)
110
103
  end
111
104
 
112
105
  def get_list(url)
@@ -122,32 +115,26 @@ class GdsApi::ContentApi < GdsApi::Base
122
115
  super(url, &create_response)
123
116
  end
124
117
 
125
- def get_json!(url, &create_response)
126
- create_response = create_response || Proc.new { |r|
127
- GdsApi::Response.new(r, web_urls_relative_to: @web_urls_relative_to)
128
- }
129
- super(url, &create_response)
118
+ private
119
+
120
+ def base_url
121
+ endpoint
130
122
  end
131
123
 
132
- private
133
- def base_url
134
- endpoint
135
- end
124
+ def key_for_tag_type(tag_type)
125
+ tag_type.nil? ? "tag" : CGI.escape(tag_type)
126
+ end
136
127
 
137
- def key_for_tag_type(tag_type)
138
- tag_type.nil? ? "tag" : CGI.escape(tag_type)
128
+ def artefact_url(slug, params)
129
+ url = "#{base_url}/#{CGI.escape(slug)}.json"
130
+ query = params.map { |k, v| "#{k}=#{v}" }
131
+ if query.any?
132
+ url += "?#{query.join('&')}"
139
133
  end
140
134
 
141
- def artefact_url(slug, params)
142
- url = "#{base_url}/#{CGI.escape(slug)}.json"
143
- query = params.map { |k,v| "#{k}=#{v}" }
144
- if query.any?
145
- url += "?#{query.join("&")}"
146
- end
147
-
148
- if params[:edition] && ! options.include?(:bearer_token)
149
- raise GdsApi::NoBearerToken
150
- end
151
- url
135
+ if params[:edition] && ! options.include?(:bearer_token)
136
+ raise GdsApi::NoBearerToken
152
137
  end
138
+ url
139
+ end
153
140
  end
@@ -2,7 +2,6 @@ require_relative 'base'
2
2
  require_relative 'exceptions'
3
3
 
4
4
  class GdsApi::ContentStore < GdsApi::Base
5
-
6
5
  class ItemNotFound < GdsApi::HTTPNotFound
7
6
  def self.build_from(http_error)
8
7
  new(http_error.code, http_error.message, http_error.error_details)
@@ -10,7 +9,7 @@ class GdsApi::ContentStore < GdsApi::Base
10
9
  end
11
10
 
12
11
  def content_item(base_path)
13
- get_json!(content_item_url(base_path))
12
+ get_json(content_item_url(base_path))
14
13
  rescue GdsApi::HTTPNotFound => e
15
14
  raise ItemNotFound.build_from(e)
16
15
  end
@@ -19,7 +18,7 @@ class GdsApi::ContentStore < GdsApi::Base
19
18
  raise "`ContentStore#content_item!` is deprecated. Use `ContentStore#content_item` instead"
20
19
  end
21
20
 
22
- private
21
+ private
23
22
 
24
23
  def content_item_url(base_path)
25
24
  "#{endpoint}/content#{base_path}"
@@ -6,7 +6,6 @@ require_relative 'exceptions'
6
6
  # @see https://github.com/alphagov/email-alert-api
7
7
  # @api documented
8
8
  class GdsApi::EmailAlertApi < GdsApi::Base
9
-
10
9
  # Get or Post subscriber list
11
10
  #
12
11
  # @param attributes [Hash] document_type, links, tags used to search existing subscriber lists
@@ -34,7 +33,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
34
33
  #
35
34
  # @param publication [Hash] Valid publication attributes
36
35
  def send_alert(publication)
37
- post_json!("#{endpoint}/notifications", publication)
36
+ post_json("#{endpoint}/notifications", publication)
38
37
  end
39
38
 
40
39
  # Get notifications
@@ -42,10 +41,10 @@ class GdsApi::EmailAlertApi < GdsApi::Base
42
41
  # @option start_at [String] Optional GovDelivery bulletin id to page back through notifications
43
42
  #
44
43
  # @return [Hash] notifications
45
- def notifications(start_at=nil)
44
+ def notifications(start_at = nil)
46
45
  url = "#{endpoint}/notifications"
47
46
  url += "?start_at=#{start_at}" if start_at
48
- get_json!(url)
47
+ get_json(url)
49
48
  end
50
49
 
51
50
  # Get notification
@@ -54,18 +53,18 @@ class GdsApi::EmailAlertApi < GdsApi::Base
54
53
  #
55
54
  # @return [Hash] notification
56
55
  def notification(id)
57
- get_json!("#{endpoint}/notifications/#{id}")
56
+ get_json("#{endpoint}/notifications/#{id}")
58
57
  end
59
58
 
60
59
  private
61
60
 
62
61
  def search_subscriber_list(params)
63
62
  query_string = nested_query_string(params)
64
- get_json!("#{endpoint}/subscriber-lists?" + query_string)
63
+ get_json("#{endpoint}/subscriber-lists?" + query_string)
65
64
  end
66
65
 
67
66
  def create_subscriber_list(attributes)
68
- post_json!("#{endpoint}/subscriber-lists", attributes)
67
+ post_json("#{endpoint}/subscriber-lists", attributes)
69
68
  end
70
69
 
71
70
  def nested_query_string(params)
@@ -46,13 +46,16 @@ module GdsApi
46
46
  class HTTPUnprocessableEntity < HTTPClientError
47
47
  end
48
48
 
49
+ class InvalidUrl < BaseError; end
50
+
49
51
  class NoBearerToken < BaseError; end
50
52
 
51
53
  module ExceptionHandling
52
- def ignoring(exception_or_exceptions, &block)
54
+ def ignoring(exception_or_exceptions)
53
55
  yield
54
56
  rescue *exception_or_exceptions
55
57
  # Discard the exception
58
+ nil
56
59
  end
57
60
 
58
61
  def ignoring_missing(&block)
@@ -3,36 +3,37 @@ require_relative 'exceptions'
3
3
  require 'json'
4
4
 
5
5
  class GdsApi::GovUkDelivery < GdsApi::Base
6
-
7
- def initialize(endpoint_url, options={})
8
- super(endpoint_url, options.merge({timeout: 10}))
6
+ def initialize(endpoint_url, options = {})
7
+ super(endpoint_url, options.merge(timeout: 10))
9
8
  end
10
9
 
11
10
  def subscribe(email, feed_urls)
12
- data = {email: email, feed_urls: feed_urls}
11
+ data = { email: email, feed_urls: feed_urls }
13
12
  url = "#{base_url}/subscriptions"
14
13
  post_url(url, data)
15
14
  end
16
15
 
17
- def topic(feed_url, title, description=nil)
18
- data = {feed_url: feed_url, title: title, description: description}
16
+ def topic(feed_url, title, description = nil)
17
+ data = { feed_url: feed_url, title: title, description: description }
19
18
  url = "#{base_url}/lists"
20
19
  post_url(url, data)
21
20
  end
22
21
 
23
22
  def signup_url(feed_url)
24
- if response = get_json("#{base_url}/list-url?feed_url=#{CGI.escape(feed_url)}")
23
+ response = get_json("#{base_url}/list-url?feed_url=#{CGI.escape(feed_url)}")
24
+ if response
25
25
  response['list_url']
26
26
  end
27
27
  end
28
28
 
29
29
  def notify(feed_urls, subject, body)
30
- data = {feed_urls: feed_urls, subject: subject, body: body}
30
+ data = { feed_urls: feed_urls, subject: subject, body: body }
31
31
  url = "#{base_url}/notifications"
32
32
  post_url(url, data)
33
33
  end
34
34
 
35
35
  private
36
+
36
37
  def base_url
37
38
  endpoint
38
39
  end