gds-api-adapters 78.1.0 → 79.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4aced99bb9908549cfe0a2d8f2a57df4e799d55fe7df796f3f29ae7361884694
4
- data.tar.gz: 29835f7a98aaf0cb5e4feadd57de90a2c01231a7dc12f28f5aa99845994a5a9d
3
+ metadata.gz: 56aec1e3622b0974b51878653be4dfc833cc7e4bb8668c788e19ba38666dbffe
4
+ data.tar.gz: defee880c91c2c1ed568c5320a051ad938f6e1bb5a0d9a9e2f9ac705bc3c616a
5
5
  SHA512:
6
- metadata.gz: 9f6a041fb8a075caafd88fc3f7828cd41be441ad1b491f5c738bfb3b726bd34993d30eaf52c83da3f55d19ce40267a6141e2221e8fef4a9d5682cede429537a2
7
- data.tar.gz: 0d47922f059483ff795bac96f673f8bb51284a544b0af926e4aa7afbbd6f53c9310a371d53107dd2b1fba3b5656ac8c60fbf6cb0af490b8e295a261958a5b055
6
+ metadata.gz: 2aa101d336e0151c5517bb15e7126489fd44cfbd9da7683f34a74865bf5f62ba051075feb990c22ed3cd34022ac5d5e120bb9924d3f116fc32ab1498bbda6db2
7
+ data.tar.gz: 5d50b8fb50c41d00b1e99a500dffb3969a43d33d6df7bf7d6693a383ca1226e35b91b5d5072880a9b57cd41727225233d520110876efabbcd8f119ebf83e67df
@@ -38,6 +38,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
38
38
  #
39
39
  # @param message [Hash] Valid message attributes
40
40
  def create_message(message, headers = {})
41
+ warn "#create_message is deprecated and will be removed in a future version."
41
42
  post_json("#{endpoint}/messages", message, headers)
42
43
  end
43
44
 
@@ -267,6 +268,17 @@ class GdsApi::EmailAlertApi < GdsApi::Base
267
268
  )
268
269
  end
269
270
 
271
+ # Update subscriber list details, such as title
272
+ # @param [Hash] params A hash of detail paramaters that can be updated. For example title.
273
+ # For allowed parameters see:
274
+ # https://github.com/alphagov/email-alert-api/blob/main/docs/api.md#patch-subscriber-listsxxx
275
+ def update_subscriber_list_details(slug:, params: {})
276
+ patch_json(
277
+ "#{endpoint}/subscriber-lists/#{slug}",
278
+ params,
279
+ )
280
+ end
281
+
270
282
  private
271
283
 
272
284
  def nested_query_string(params)
@@ -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
@@ -440,6 +440,11 @@ module GdsApi
440
440
  ).to_return(status: 404)
441
441
  end
442
442
 
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
+
443
448
  def stub_email_alert_api_bulk_unsubscribe_conflict_with_message(slug:, govuk_request_id:, body:, sender_message_id:)
444
449
  stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
445
450
  .with(
@@ -451,13 +456,43 @@ module GdsApi
451
456
  ).to_return(status: 409)
452
457
  end
453
458
 
454
- def stub_email_alert_api_bulk_unsubscribe_bad_request(slug:, body:)
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:)
455
465
  stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists/#{slug}/bulk-unsubscribe")
456
466
  .with(
457
- body: { body: body }.to_json,
467
+ body: {
468
+ body: body,
469
+ sender_message_id: sender_message_id,
470
+ }.to_json,
471
+ headers: { "Govuk-Request-Id" => govuk_request_id },
458
472
  ).to_return(status: 422)
459
473
  end
460
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
+
461
496
  private
462
497
 
463
498
  def get_subscriber_response(id, address, govuk_account_id)
@@ -537,6 +572,7 @@ module GdsApi
537
572
  if attributes
538
573
  tags = attributes["tags"]
539
574
  links = attributes["links"]
575
+ content_id = attributes["content_id"]
540
576
  document_type = attributes["document_type"]
541
577
  email_document_supertype = attributes["email_document_supertype"]
542
578
  government_document_supertype = attributes["government_document_supertype"]
@@ -546,6 +582,7 @@ module GdsApi
546
582
  params = {}
547
583
  params[:tags] = tags if tags
548
584
  params[:links] = links if links
585
+ params[:content_id] = content_id if content_id
549
586
  params[:document_type] = document_type if document_type
550
587
  params[:email_document_supertype] = email_document_supertype if email_document_supertype
551
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
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "78.1.0".freeze
2
+ VERSION = "79.1.1".freeze
3
3
  end
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: 78.1.0
4
+ version: 79.1.1
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-01-19 00:00:00.000000000 Z
11
+ date: 2022-03-29 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