gds-api-adapters 38.0.0 → 38.1.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.
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