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.
- checksums.yaml +4 -4
- data/Rakefile +5 -5
- data/lib/gds_api/asset_manager.rb +7 -7
- data/lib/gds_api/base.rb +13 -11
- data/lib/gds_api/business_support_api.rb +3 -4
- data/lib/gds_api/content_api.rb +31 -44
- data/lib/gds_api/content_store.rb +2 -3
- data/lib/gds_api/email_alert_api.rb +6 -7
- data/lib/gds_api/exceptions.rb +4 -1
- data/lib/gds_api/gov_uk_delivery.rb +9 -8
- data/lib/gds_api/govuk_headers.rb +1 -1
- data/lib/gds_api/imminence.rb +9 -10
- data/lib/gds_api/json_client.rb +21 -34
- data/lib/gds_api/licence_application.rb +2 -2
- data/lib/gds_api/list_response.rb +7 -10
- data/lib/gds_api/local_links_manager.rb +1 -1
- data/lib/gds_api/mapit.rb +5 -6
- data/lib/gds_api/middleware/govuk_header_sniffer.rb +1 -1
- data/lib/gds_api/need_api.rb +7 -8
- data/lib/gds_api/null_cache.rb +2 -2
- data/lib/gds_api/organisations.rb +2 -2
- data/lib/gds_api/panopticon.rb +11 -11
- data/lib/gds_api/performance_platform/data_in.rb +4 -4
- data/lib/gds_api/performance_platform/data_out.rb +1 -1
- data/lib/gds_api/publishing_api.rb +4 -5
- data/lib/gds_api/publishing_api/special_route_publisher.rb +5 -3
- data/lib/gds_api/publishing_api_v2.rb +8 -16
- data/lib/gds_api/response.rb +2 -5
- data/lib/gds_api/router.rb +18 -9
- data/lib/gds_api/rummager.rb +6 -7
- data/lib/gds_api/support.rb +7 -6
- data/lib/gds_api/support_api.rb +14 -14
- data/lib/gds_api/test_helpers/asset_manager.rb +3 -6
- data/lib/gds_api/test_helpers/business_support_api.rb +4 -4
- data/lib/gds_api/test_helpers/business_support_helper.rb +9 -8
- data/lib/gds_api/test_helpers/common_responses.rb +10 -12
- data/lib/gds_api/test_helpers/content_api.rb +23 -23
- data/lib/gds_api/test_helpers/content_api/artefact_stub.rb +13 -12
- data/lib/gds_api/test_helpers/content_item_helpers.rb +4 -4
- data/lib/gds_api/test_helpers/content_store.rb +3 -3
- data/lib/gds_api/test_helpers/email_alert_api.rb +8 -10
- data/lib/gds_api/test_helpers/gov_uk_delivery.rb +0 -1
- data/lib/gds_api/test_helpers/imminence.rb +4 -4
- data/lib/gds_api/test_helpers/intent_helpers.rb +0 -2
- data/lib/gds_api/test_helpers/local_links_manager.rb +12 -13
- data/lib/gds_api/test_helpers/mapit.rb +14 -15
- data/lib/gds_api/test_helpers/need_api.rb +4 -4
- data/lib/gds_api/test_helpers/organisations.rb +13 -15
- data/lib/gds_api/test_helpers/panopticon.rb +6 -6
- data/lib/gds_api/test_helpers/performance_platform/data_in.rb +8 -8
- data/lib/gds_api/test_helpers/publishing_api.rb +19 -20
- data/lib/gds_api/test_helpers/publishing_api_v2.rb +13 -13
- data/lib/gds_api/test_helpers/router.rb +5 -5
- data/lib/gds_api/test_helpers/rummager.rb +5 -4
- data/lib/gds_api/test_helpers/support.rb +11 -11
- data/lib/gds_api/test_helpers/support_api.rb +14 -14
- data/lib/gds_api/test_helpers/whitehall_admin_api.rb +1 -1
- data/lib/gds_api/test_helpers/worldwide.rb +16 -19
- data/lib/gds_api/version.rb +1 -1
- data/lib/gds_api/worldwide.rb +4 -4
- data/test/asset_manager_test.rb +6 -6
- data/test/business_support_api_test.rb +9 -10
- data/test/content_api_test.rb +81 -83
- data/test/email_alert_api_test.rb +3 -5
- data/test/gds_api_base_test.rb +9 -10
- data/test/gov_uk_delivery_test.rb +4 -6
- data/test/imminence_api_test.rb +7 -9
- data/test/json_client_test.rb +71 -64
- data/test/licence_application_api_test.rb +5 -7
- data/test/list_response_test.rb +27 -32
- data/test/mapit_test.rb +7 -9
- data/test/middleware/govuk_header_sniffer_test.rb +1 -1
- data/test/need_api_test.rb +8 -8
- data/test/organisations_api_test.rb +2 -2
- data/test/panopticon_registerer_test.rb +10 -10
- data/test/panopticon_test.rb +5 -5
- data/test/pp_data_in_test.rb +3 -3
- data/test/publishing_api_test.rb +2 -6
- data/test/publishing_api_v2_test.rb +40 -50
- data/test/response_test.rb +21 -22
- data/test/router_test.rb +78 -80
- data/test/rummager_test.rb +14 -14
- data/test/support_api_test.rb +13 -13
- data/test/support_test.rb +15 -16
- data/test/test_helper.rb +1 -1
- data/test/test_helpers/email_alert_api_test.rb +3 -3
- data/test/test_helpers/pact_helper.rb +1 -1
- data/test/test_helpers/panopticon_test.rb +1 -1
- data/test/test_helpers/publishing_api_test.rb +7 -7
- data/test/test_helpers/publishing_api_v2_test.rb +5 -9
- data/test/worldwide_api_test.rb +3 -3
- metadata +2 -3
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cb1959cc394a5171ec4c09c0b3f5b1a39dde285
|
4
|
+
data.tar.gz: d025956a6c6d34a8e0d68e92c6d0bb75ec5cdcc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 :
|
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 =
|
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 |
|
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 |
|
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 |
|
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",
|
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}",
|
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
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
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,
|
22
|
-
:post_json,
|
23
|
-
:put_json,
|
24
|
-
:patch_json,
|
25
|
-
:delete_json,
|
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
|
55
|
-
get_json
|
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
|
7
|
+
get_list(url_for_slug('business-support-schemes', options))
|
9
8
|
end
|
10
9
|
|
11
10
|
def scheme(slug)
|
12
|
-
get_json
|
11
|
+
get_json(url_for_slug("business-support-schemes/#{slug}"))
|
13
12
|
end
|
14
13
|
|
15
|
-
|
14
|
+
private
|
16
15
|
|
17
16
|
def base_url
|
18
17
|
endpoint
|
data/lib/gds_api/content_api.rb
CHANGED
@@ -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
|
36
|
+
get_list("#{base_url}/tags.json?#{params.join('&')}")
|
38
37
|
end
|
39
38
|
|
40
39
|
def root_tags(tag_type)
|
41
|
-
get_list
|
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
|
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
|
70
|
+
def artefact!(slug, params = {})
|
71
|
+
get_json(artefact_url(slug, params))
|
73
72
|
end
|
74
73
|
|
75
74
|
def artefacts
|
76
|
-
get_list
|
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
|
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
|
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
|
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
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
super(url, &create_response)
|
118
|
+
private
|
119
|
+
|
120
|
+
def base_url
|
121
|
+
endpoint
|
130
122
|
end
|
131
123
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
end
|
124
|
+
def key_for_tag_type(tag_type)
|
125
|
+
tag_type.nil? ? "tag" : CGI.escape(tag_type)
|
126
|
+
end
|
136
127
|
|
137
|
-
|
138
|
-
|
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
|
-
|
142
|
-
|
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
|
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
|
-
|
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
|
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
|
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
|
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
|
63
|
+
get_json("#{endpoint}/subscriber-lists?" + query_string)
|
65
64
|
end
|
66
65
|
|
67
66
|
def create_subscriber_list(attributes)
|
68
|
-
post_json
|
67
|
+
post_json("#{endpoint}/subscriber-lists", attributes)
|
69
68
|
end
|
70
69
|
|
71
70
|
def nested_query_string(params)
|
data/lib/gds_api/exceptions.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
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
|