gds-api-adapters 52.1.0 → 52.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40085ff1cfbfc2f1b252dae911e46de0b8abedd0ad89baa379a4e9547e37c756
4
- data.tar.gz: c5b4deb265a8398b9f5c02ac73fb054536c63ef4a5334831040365a6628181f0
3
+ metadata.gz: 6336130268f19fee00d05ba2a6332da8a534f4b94fbc5eb52d774a117305b9f9
4
+ data.tar.gz: 7e6596cb403f449a386f9e08b80b4ccc253c0efb4d7e465d13de5ec955711406
5
5
  SHA512:
6
- metadata.gz: df132d9e73f0456a45086a0774e56272df554714ae25754d4f40a83a51d9ad2eca2b69cf2de37e981c9e87b130ff96267eae1b87584c7388e454e455cca685f8
7
- data.tar.gz: 29bfdb1f8457561a9f3008be3b6dfaaa320a34d0aa581ee07ab46b6708c7e00ba0ac2d2ff1aced212a03bb4da449301760c6ccf5f0f0155148c054d2653686ae
6
+ metadata.gz: e8c4700994a3894fe6c3a2e6d97902c084afad6302e12cc211d3cf12febd27248ff7718f33a1e54a3fdc1c7bb640807804fcf8bdff55aa8bb7644833cb92dde2
7
+ data.tar.gz: 99396abbb0adc97095c80ccbceaea467be35b59df0ddd8ec260ceae32fcb4e06a0640c6b87d76229246a0d53dcaff06a19342120d3ca6958ebd95b3b76f31124
data/lib/gds_api/base.rb CHANGED
@@ -41,7 +41,7 @@ class GdsApi::Base
41
41
 
42
42
  def initialize(endpoint_url, options = {})
43
43
  options[:endpoint_url] = endpoint_url
44
- raise InvalidAPIURL unless endpoint_url =~ URI::regexp
44
+ raise InvalidAPIURL unless endpoint_url =~ URI::RFC3986_Parser::RFC3986_URI
45
45
  base_options = { logger: self.class.logger }
46
46
  default_options = base_options.merge(GdsApi::Base.default_options || {})
47
47
  @options = default_options.merge(options)
@@ -105,8 +105,58 @@ class GdsApi::EmailAlertApi < GdsApi::Base
105
105
  # subscriber_count
106
106
  # }
107
107
  def get_subscribable(reference:)
108
- get_json(
109
- "#{endpoint}/subscribables/#{reference}"
108
+ get_json("#{endpoint}/subscribables/#{reference}")
109
+ end
110
+
111
+ # Get a Subscription
112
+ #
113
+ # @return [Hash] subscription: {
114
+ # id
115
+ # subscriber_list
116
+ # subscriber
117
+ # created_at
118
+ # updated_at
119
+ # ended_at
120
+ # ended_reason
121
+ # frequency
122
+ # source
123
+ # }
124
+ def get_subscription(id)
125
+ get_json("#{endpoint}/subscriptions/#{id}")
126
+ end
127
+
128
+ # Get Subscriptions for a Subscriber
129
+ # #
130
+ # @param string Subscriber address
131
+ #
132
+ # @return [Hash] subscriber, subscriptions
133
+ def get_subscriptions(address:)
134
+ get_json("#{endpoint}/subscribers/#{address}/subscriptions")
135
+ end
136
+
137
+ # Patch a Subscriber
138
+ # #
139
+ # @param string Subscriber address
140
+ # @param string Subscriber new_address
141
+ #
142
+ # @return [Hash] subscriber
143
+ def change_subscriber(address:, new_address:)
144
+ patch_json(
145
+ "#{endpoint}/subscribers/#{address}",
146
+ new_address: new_address
147
+ )
148
+ end
149
+
150
+ # Patch a Subscription
151
+ # #
152
+ # @param string Subscription id
153
+ # @param string Subscription frequency
154
+ #
155
+ # @return [Hash] subscription
156
+ def change_subscription(id:, frequency:)
157
+ patch_json(
158
+ "#{endpoint}/subscriptions/#{id}",
159
+ frequency: frequency
110
160
  )
111
161
  end
112
162
 
@@ -31,7 +31,7 @@ class GdsApi::Imminence < GdsApi::Base
31
31
  end
32
32
 
33
33
  def areas_for_postcode(postcode)
34
- url = "#{@endpoint}/areas/#{URI.encode(postcode)}.json"
34
+ url = "#{@endpoint}/areas/#{ERB::Util.url_encode(postcode)}.json"
35
35
  get_json(url)
36
36
  end
37
37
 
@@ -6,6 +6,53 @@ module GdsApi
6
6
  module EmailAlertApi
7
7
  EMAIL_ALERT_API_ENDPOINT = Plek.find("email-alert-api")
8
8
 
9
+ def email_alert_api_has_updated_subscriber(old_address, new_address)
10
+ stub_request(:patch, subscriber_url(old_address))
11
+ .to_return(
12
+ status: 200,
13
+ body: get_subscriber_response(new_address).to_json,
14
+ )
15
+ end
16
+
17
+ def email_alert_api_does_not_have_updated_subscriber(address)
18
+ stub_request(:patch, subscriber_url(address))
19
+ .to_return(status: 404)
20
+ end
21
+
22
+ def email_alert_api_has_updated_subscription(subscription_id, frequency)
23
+ stub_request(:patch, subscription_url(subscription_id))
24
+ .to_return(
25
+ status: 200,
26
+ body: get_subscription_response(subscription_id, frequency).to_json,
27
+ )
28
+ end
29
+
30
+ def email_alert_api_does_not_have_updated_subscription(subscription_id)
31
+ stub_request(:patch, subscription_url(subscription_id))
32
+ .to_return(status: 404)
33
+ end
34
+
35
+ def email_alert_api_has_subscriber_subscriptions(address)
36
+ stub_request(:get, subscriber_subscriptions_url(address))
37
+ .to_return(
38
+ status: 200,
39
+ body: get_subscriber_subscriptions_response(address).to_json,
40
+ )
41
+ end
42
+
43
+ def email_alert_api_does_not_have_subscriber_subscriptions(address)
44
+ stub_request(:get, subscriber_subscriptions_url(address))
45
+ .to_return(status: 404)
46
+ end
47
+
48
+ def email_alert_api_has_subscription(id, frequency)
49
+ stub_request(:get, subscription_url(id))
50
+ .to_return(
51
+ status: 200,
52
+ body: get_subscription_response(id, frequency).to_json,
53
+ )
54
+ end
55
+
9
56
  def email_alert_api_has_subscriber_list(attributes)
10
57
  stub_request(:get, subscriber_lists_url(attributes))
11
58
  .to_return(
@@ -34,12 +81,55 @@ module GdsApi
34
81
  )
35
82
  end
36
83
 
84
+ def get_subscriber_response(address)
85
+ {
86
+ "subscriber" => {
87
+ "id" => 1,
88
+ "address" => address
89
+ }
90
+ }
91
+ end
92
+
93
+ def get_subscription_response(subscription_id, frequency)
94
+ {
95
+ "subscription" => {
96
+ "subscriber_id" => 1,
97
+ "subscriber_list_id" => 1000,
98
+ "frequency" => frequency,
99
+ "id" => subscription_id,
100
+ "subscriber_list" => {
101
+ "id" => 1000,
102
+ "slug" => "some-thing"
103
+ }
104
+ }
105
+ }
106
+ end
107
+
108
+ def get_subscriber_subscriptions_response(address)
109
+ {
110
+ "subscriber" => {
111
+ "id" => 1,
112
+ "address" => address
113
+ },
114
+ "subscriptions" => [
115
+ {
116
+ "subscriber_id" => 1,
117
+ "subscriber_list_id" => 1000,
118
+ "frequency" => "daily",
119
+ "id" => "447135c3-07d6-4c3a-8a3b-efa49ef70e52",
120
+ "subscriber_list" => {
121
+ "id" => 1000,
122
+ "slug" => "some-thing"
123
+ }
124
+ }
125
+ ]
126
+ }
127
+ end
128
+
37
129
  def get_subscriber_list_response(attributes)
38
130
  {
39
131
  "subscriber_list" => {
40
132
  "id" => "447135c3-07d6-4c3a-8a3b-efa49ef70e52",
41
- "subscription_url" => "https://stage-public.govdelivery.com/accounts/UKGOVUK/subscriber/new?topic_id=UKGOVUK_1234",
42
- "gov_delivery_id" => "UKGOVUK_1234",
43
133
  "title" => "Some title",
44
134
  }.merge(attributes)
45
135
  }
@@ -193,9 +283,21 @@ module GdsApi
193
283
  EMAIL_ALERT_API_ENDPOINT + "/subscriptions"
194
284
  end
195
285
 
286
+ def subscription_url(id)
287
+ EMAIL_ALERT_API_ENDPOINT + "/subscriptions/#{id}"
288
+ end
289
+
196
290
  def subscribable_url(reference)
197
291
  EMAIL_ALERT_API_ENDPOINT + "/subscribables/#{reference}"
198
292
  end
293
+
294
+ def subscriber_url(address)
295
+ EMAIL_ALERT_API_ENDPOINT + "/subscribers/#{address}"
296
+ end
297
+
298
+ def subscriber_subscriptions_url(address)
299
+ EMAIL_ALERT_API_ENDPOINT + "/subscribers/#{address}/subscriptions"
300
+ end
199
301
  end
200
302
  end
201
303
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '52.1.0'.freeze
2
+ VERSION = '52.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 52.1.0
4
+ version: 52.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-12 00:00:00.000000000 Z
11
+ date: 2018-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plek
@@ -114,42 +114,42 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.5'
117
+ version: '1.6'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.5'
124
+ version: '1.6'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: govuk-lint
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.3'
131
+ version: '3.7'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.3'
138
+ version: '3.7'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: minitest
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '5.10'
145
+ version: '5.11'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '5.10'
152
+ version: '5.11'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: mocha
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '1.19'
173
+ version: '1.20'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '1.19'
180
+ version: '1.20'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: pact-consumer-minitest
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: '1.13'
215
+ version: '1.14'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: '1.13'
222
+ version: '1.14'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: pry
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -282,14 +282,14 @@ dependencies:
282
282
  requirements:
283
283
  - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: 0.15.1
285
+ version: '0.16'
286
286
  type: :development
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: 0.15.1
292
+ version: '0.16'
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: simplecov-rcov
295
295
  requirement: !ruby/object:Gem::Requirement
@@ -310,56 +310,56 @@ dependencies:
310
310
  requirements:
311
311
  - - "~>"
312
312
  - !ruby/object:Gem::Version
313
- version: 0.9.1
313
+ version: '0.9'
314
314
  type: :development
315
315
  prerelease: false
316
316
  version_requirements: !ruby/object:Gem::Requirement
317
317
  requirements:
318
318
  - - "~>"
319
319
  - !ruby/object:Gem::Version
320
- version: 0.9.1
320
+ version: '0.9'
321
321
  - !ruby/object:Gem::Dependency
322
322
  name: webmock
323
323
  requirement: !ruby/object:Gem::Requirement
324
324
  requirements:
325
325
  - - "~>"
326
326
  - !ruby/object:Gem::Version
327
- version: '3.1'
327
+ version: '3.3'
328
328
  type: :development
329
329
  prerelease: false
330
330
  version_requirements: !ruby/object:Gem::Requirement
331
331
  requirements:
332
332
  - - "~>"
333
333
  - !ruby/object:Gem::Version
334
- version: '3.1'
334
+ version: '3.3'
335
335
  - !ruby/object:Gem::Dependency
336
336
  name: webrick
337
337
  requirement: !ruby/object:Gem::Requirement
338
338
  requirements:
339
339
  - - "~>"
340
340
  - !ruby/object:Gem::Version
341
- version: '1.3'
341
+ version: '1.4'
342
342
  type: :development
343
343
  prerelease: false
344
344
  version_requirements: !ruby/object:Gem::Requirement
345
345
  requirements:
346
346
  - - "~>"
347
347
  - !ruby/object:Gem::Version
348
- version: '1.3'
348
+ version: '1.4'
349
349
  - !ruby/object:Gem::Dependency
350
350
  name: yard
351
351
  requirement: !ruby/object:Gem::Requirement
352
352
  requirements:
353
353
  - - "~>"
354
354
  - !ruby/object:Gem::Version
355
- version: 0.9.11
355
+ version: '0.9'
356
356
  type: :development
357
357
  prerelease: false
358
358
  version_requirements: !ruby/object:Gem::Requirement
359
359
  requirements:
360
360
  - - "~>"
361
361
  - !ruby/object:Gem::Version
362
- version: 0.9.11
362
+ version: '0.9'
363
363
  description: A set of adapters providing easy access to the GDS GOV.UK APIs
364
364
  email:
365
365
  - govuk-dev@digital.cabinet-office.gov.uk