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.
- 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
|