gds-api-adapters 78.0.0 → 79.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gds_api/email_alert_api.rb +18 -3
- data/lib/gds_api/locations_api.rb +28 -0
- data/lib/gds_api/test_helpers/email_alert_api.rb +45 -5
- data/lib/gds_api/test_helpers/locations_api.rb +38 -0
- data/lib/gds_api/version.rb +1 -1
- data/lib/gds_api.rb +8 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be2d6d94c4da753ae82eabe4728e9e21d385c8d7332baa5682eed54ee4d41d37
|
4
|
+
data.tar.gz: c0435733dd835d528ae596002542aa426030b494bcb7c839ba80b8020322e089
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f731412f3b2172d700bae052a934b30051213c28dd8b6217154196193b5c6c246efeac1b682b199cce2f8f1d38974c7864fb3aca682219492da8ccf92f41b2b0
|
7
|
+
data.tar.gz: 4e61e4360f445fa5c37e364303893874eedc3004e8e53d6dc0df3ffffbb08e1f0316882860bf9c389bdc12a425cbd2e93aa6ef7823aaa8ed300ae60dc28446f8
|
@@ -251,15 +251,30 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
251
251
|
# optionally send a notification email explaining the reason
|
252
252
|
#
|
253
253
|
# @param [string] slug Identifier for the subscription list
|
254
|
-
# @param [string] (optional)
|
255
|
-
# @param [string] (optional)
|
256
|
-
|
254
|
+
# @param [string] (optional) govuk_request_id An ID allowing us to trace requests across our infra. Required if you want to send an email.
|
255
|
+
# @param [string] (optional) body Optional email body to send to alert users they are being unsubscribed. Required if you want to send an email
|
256
|
+
# @param [string] (optional) sender_message_id A UUID to prevent multiple emails for the same event. Required if you want to send an email.
|
257
|
+
def bulk_unsubscribe(slug:, govuk_request_id: nil, body: nil, sender_message_id: nil)
|
257
258
|
post_json(
|
258
259
|
"#{endpoint}/subscriber-lists/#{slug}/bulk-unsubscribe",
|
259
260
|
{
|
260
261
|
body: body,
|
261
262
|
sender_message_id: sender_message_id,
|
262
263
|
}.compact,
|
264
|
+
{
|
265
|
+
"Govuk-Request-Id" => govuk_request_id,
|
266
|
+
}.compact,
|
267
|
+
)
|
268
|
+
end
|
269
|
+
|
270
|
+
# Update subscriber list details, such as title
|
271
|
+
# @param [Hash] params A hash of detail paramaters that can be updated. For example title.
|
272
|
+
# For allowed parameters see:
|
273
|
+
# https://github.com/alphagov/email-alert-api/blob/main/docs/api.md#patch-subscriber-listsxxx
|
274
|
+
def update_subscriber_list_details(slug:, params: {})
|
275
|
+
patch_json(
|
276
|
+
"#{endpoint}/subscriber-lists/#{slug}",
|
277
|
+
params,
|
263
278
|
)
|
264
279
|
end
|
265
280
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
require_relative "exceptions"
|
3
|
+
|
4
|
+
class GdsApi::LocationsApi < GdsApi::Base
|
5
|
+
# Get a list of local custodian codes for a postcode
|
6
|
+
#
|
7
|
+
# @param [String, nil] postcode The postcode for which the custodian codes are requested
|
8
|
+
#
|
9
|
+
# @return [Array] All local custodian codes for a specific postcode
|
10
|
+
def local_custodian_code_for_postcode(postcode)
|
11
|
+
response = get_json("#{endpoint}/locations?postcode=#{postcode}.json")
|
12
|
+
|
13
|
+
return [] if response["results"].nil?
|
14
|
+
|
15
|
+
response["results"].map { |r| r["local_custodian_code"] }.uniq
|
16
|
+
end
|
17
|
+
|
18
|
+
# Get the average coordinates for a postcode
|
19
|
+
#
|
20
|
+
# @param [String, nil] postcode The postcode for which the coordinates are requested
|
21
|
+
#
|
22
|
+
# @return [Hash] The average coordinates (two fields, "latitude" and "longitude") for a specific postcode
|
23
|
+
def coordinates_for_postcode(postcode)
|
24
|
+
response = get_json("#{endpoint}/locations?postcode=#{postcode}.json")
|
25
|
+
|
26
|
+
{ "latitude" => response["average_latitude"], "longitude" => response["average_longitude"] } unless response["results"].nil?
|
27
|
+
end
|
28
|
+
end
|
@@ -413,13 +413,14 @@ module GdsApi
|
|
413
413
|
.to_return(status: 202)
|
414
414
|
end
|
415
415
|
|
416
|
-
def stub_email_alert_api_bulk_unsubscribe_with_message(slug:, body:, sender_message_id:)
|
416
|
+
def stub_email_alert_api_bulk_unsubscribe_with_message(slug:, govuk_request_id:, body:, sender_message_id:)
|
417
417
|
stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
|
418
418
|
.with(
|
419
419
|
body: {
|
420
420
|
body: body,
|
421
421
|
sender_message_id: sender_message_id,
|
422
422
|
}.to_json,
|
423
|
+
headers: { "Govuk-Request-Id" => govuk_request_id },
|
423
424
|
).to_return(status: 202)
|
424
425
|
end
|
425
426
|
|
@@ -428,33 +429,70 @@ module GdsApi
|
|
428
429
|
.to_return(status: 404)
|
429
430
|
end
|
430
431
|
|
431
|
-
def stub_email_alert_api_bulk_unsubscribe_not_found_with_message(slug:, body:, sender_message_id:)
|
432
|
+
def stub_email_alert_api_bulk_unsubscribe_not_found_with_message(slug:, govuk_request_id:, body:, sender_message_id:)
|
432
433
|
stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
|
433
434
|
.with(
|
434
435
|
body: {
|
435
436
|
body: body,
|
436
437
|
sender_message_id: sender_message_id,
|
437
438
|
}.to_json,
|
439
|
+
headers: { "Govuk-Request-Id" => govuk_request_id },
|
438
440
|
).to_return(status: 404)
|
439
441
|
end
|
440
442
|
|
441
|
-
def
|
443
|
+
def stub_email_alert_api_bulk_unsubscribe_conflict(slug:)
|
444
|
+
stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
|
445
|
+
.to_return(status: 409)
|
446
|
+
end
|
447
|
+
|
448
|
+
def stub_email_alert_api_bulk_unsubscribe_conflict_with_message(slug:, govuk_request_id:, body:, sender_message_id:)
|
442
449
|
stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
|
443
450
|
.with(
|
444
451
|
body: {
|
445
452
|
body: body,
|
446
453
|
sender_message_id: sender_message_id,
|
447
454
|
}.to_json,
|
455
|
+
headers: { "Govuk-Request-Id" => govuk_request_id },
|
448
456
|
).to_return(status: 409)
|
449
457
|
end
|
450
458
|
|
451
|
-
def stub_email_alert_api_bulk_unsubscribe_bad_request(slug
|
459
|
+
def stub_email_alert_api_bulk_unsubscribe_bad_request(slug:)
|
460
|
+
stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
|
461
|
+
.to_return(status: 422)
|
462
|
+
end
|
463
|
+
|
464
|
+
def stub_email_alert_api_bulk_unsubscribe_bad_request_with_message(slug:, govuk_request_id:, body:, sender_message_id:)
|
452
465
|
stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
|
453
466
|
.with(
|
454
|
-
body: {
|
467
|
+
body: {
|
468
|
+
body: body,
|
469
|
+
sender_message_id: sender_message_id,
|
470
|
+
}.to_json,
|
471
|
+
headers: { "Govuk-Request-Id" => govuk_request_id },
|
455
472
|
).to_return(status: 422)
|
456
473
|
end
|
457
474
|
|
475
|
+
def stub_update_subscriber_list_details(slug:, params:)
|
476
|
+
stub_request(:patch, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}")
|
477
|
+
.with(body: params.to_json)
|
478
|
+
.to_return(
|
479
|
+
status: 200,
|
480
|
+
body: get_subscriber_list_response(params).to_json,
|
481
|
+
)
|
482
|
+
end
|
483
|
+
|
484
|
+
def stub_update_subscriber_list_details_not_found(slug:, params:)
|
485
|
+
stub_request(:patch, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}")
|
486
|
+
.with(body: params.to_json)
|
487
|
+
.to_return(status: 404)
|
488
|
+
end
|
489
|
+
|
490
|
+
def stub_update_subscriber_list_details_unprocessible_entity(slug:, params: {})
|
491
|
+
stub_request(:patch, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}")
|
492
|
+
.with(body: params.to_json)
|
493
|
+
.to_return(status: 422)
|
494
|
+
end
|
495
|
+
|
458
496
|
private
|
459
497
|
|
460
498
|
def get_subscriber_response(id, address, govuk_account_id)
|
@@ -534,6 +572,7 @@ module GdsApi
|
|
534
572
|
if attributes
|
535
573
|
tags = attributes["tags"]
|
536
574
|
links = attributes["links"]
|
575
|
+
content_id = attributes["content_id"]
|
537
576
|
document_type = attributes["document_type"]
|
538
577
|
email_document_supertype = attributes["email_document_supertype"]
|
539
578
|
government_document_supertype = attributes["government_document_supertype"]
|
@@ -543,6 +582,7 @@ module GdsApi
|
|
543
582
|
params = {}
|
544
583
|
params[:tags] = tags if tags
|
545
584
|
params[:links] = links if links
|
585
|
+
params[:content_id] = content_id if content_id
|
546
586
|
params[:document_type] = document_type if document_type
|
547
587
|
params[:email_document_supertype] = email_document_supertype if email_document_supertype
|
548
588
|
params[:government_document_supertype] = government_document_supertype if government_document_supertype
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module GdsApi
|
2
|
+
module TestHelpers
|
3
|
+
module LocationsApi
|
4
|
+
LOCATIONS_API_ENDPOINT = Plek.current.find("locations-api")
|
5
|
+
|
6
|
+
def stub_locations_api_has_location(postcode, locations)
|
7
|
+
results = []
|
8
|
+
locations.each do |l|
|
9
|
+
results << {
|
10
|
+
"latitude" => l["latitude"],
|
11
|
+
"longitude" => l["longitude"],
|
12
|
+
"postcode" => postcode,
|
13
|
+
"local_custodian_code" => l["local_custodian_code"],
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
response = {
|
18
|
+
"average_latitude" => results.sum { |r| r["latitude"] } / results.size.to_f,
|
19
|
+
"average_longitude" => results.sum { |r| r["longitude"] } / results.size.to_f,
|
20
|
+
"results" => results,
|
21
|
+
}
|
22
|
+
|
23
|
+
stub_request(:get, "#{LOCATIONS_API_ENDPOINT}/locations?postcode=#{postcode}.json")
|
24
|
+
.to_return(body: response.to_json, status: 200)
|
25
|
+
end
|
26
|
+
|
27
|
+
def stub_locations_api_has_no_location(postcode)
|
28
|
+
stub_request(:get, "#{LOCATIONS_API_ENDPOINT}/locations?postcode=#{postcode}.json")
|
29
|
+
.to_return(body: { "results" => nil }.to_json, status: 200)
|
30
|
+
end
|
31
|
+
|
32
|
+
def stub_locations_api_does_not_have_a_bad_postcode(postcode)
|
33
|
+
stub_request(:get, "#{LOCATIONS_API_ENDPOINT}/locations?postcode=#{postcode}.json")
|
34
|
+
.to_return(body: { "code" => 400, "error" => "Postcode '#{postcode}' is not valid." }.to_json, status: 400)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/gds_api/version.rb
CHANGED
data/lib/gds_api.rb
CHANGED
@@ -10,6 +10,7 @@ require "gds_api/imminence"
|
|
10
10
|
require "gds_api/licence_application"
|
11
11
|
require "gds_api/link_checker_api"
|
12
12
|
require "gds_api/local_links_manager"
|
13
|
+
require "gds_api/locations_api"
|
13
14
|
require "gds_api/mapit"
|
14
15
|
require "gds_api/maslow"
|
15
16
|
require "gds_api/organisations"
|
@@ -201,4 +202,11 @@ module GdsApi
|
|
201
202
|
def self.worldwide(options = {})
|
202
203
|
GdsApi::Worldwide.new(Plek.new.website_root, options)
|
203
204
|
end
|
205
|
+
|
206
|
+
# Creates a GdsApi::LocationsApi adapter
|
207
|
+
#
|
208
|
+
# @return [GdsApi::LocationsApi]
|
209
|
+
def self.locations_api(options = {})
|
210
|
+
GdsApi::LocationsApi.new(Plek.find("locations-api"), options)
|
211
|
+
end
|
204
212
|
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:
|
4
|
+
version: 79.1.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: 2022-
|
11
|
+
date: 2022-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -385,6 +385,7 @@ files:
|
|
385
385
|
- lib/gds_api/link_checker_api.rb
|
386
386
|
- lib/gds_api/list_response.rb
|
387
387
|
- lib/gds_api/local_links_manager.rb
|
388
|
+
- lib/gds_api/locations_api.rb
|
388
389
|
- lib/gds_api/mapit.rb
|
389
390
|
- lib/gds_api/maslow.rb
|
390
391
|
- lib/gds_api/middleware/govuk_header_sniffer.rb
|
@@ -409,6 +410,7 @@ files:
|
|
409
410
|
- lib/gds_api/test_helpers/licence_application.rb
|
410
411
|
- lib/gds_api/test_helpers/link_checker_api.rb
|
411
412
|
- lib/gds_api/test_helpers/local_links_manager.rb
|
413
|
+
- lib/gds_api/test_helpers/locations_api.rb
|
412
414
|
- lib/gds_api/test_helpers/mapit.rb
|
413
415
|
- lib/gds_api/test_helpers/organisations.rb
|
414
416
|
- lib/gds_api/test_helpers/publishing_api.rb
|