gds-api-adapters 97.6.0 → 98.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 546bac9e86b385628f50ab89c8bc1f619fe7517f4cecea5d1ca373c1df2fe7c3
4
- data.tar.gz: 1f51515b81f17c573cf1c69b1c15cc5dbc3e59d6af20ce48d00b3819ae7e5857
3
+ metadata.gz: b2b9f52394507921888ca9abe107c764de4af4da163dc2609f9909559f31e288
4
+ data.tar.gz: 94ff2e4bfb6f7a6b015e0049f82bc609cdbe416ee6355fdcc757b3d8d3177668
5
5
  SHA512:
6
- metadata.gz: e0ffc11729c1b4a907eaa57d777c862b481bcbd64570aa0d4b2135d0d0bf012761df48afcc96527631d7bd4a4980d0c5b24a516e16d56d744ac5e8d360b927f0
7
- data.tar.gz: 6c63c18fe23adced762bdf531ffd304d61cb3631617229bed9171052306676a1b5779453608b682e847183558db38e2a0235298b0694143825cc477cc4213a65
6
+ metadata.gz: b1cdf84bd90af029ea2c0ca24cc091cdc3b69b9c261ee6ec2632b4587e4c7db454fb56de499d0e499b110ac39567c013313f6ee6440368fe46dbf67f0ed07e74
7
+ data.tar.gz: 53ad365fffa3ac456e7e77412c986af8e6403dabb63c571a3327db5ac16fbcf573605d901c8ca29bf6cea9f1e9573320299c8e40050a0d7d9e4ea17ec2ca73b3
@@ -52,8 +52,8 @@ module GdsApi
52
52
  do_json_request(:get, url, nil, additional_headers, &create_response)
53
53
  end
54
54
 
55
- def post_json(url, params = {}, additional_headers = {})
56
- do_json_request(:post, url, params, additional_headers)
55
+ def post_json(url, params = {}, additional_headers = {}, &create_response)
56
+ do_json_request(:post, url, params, additional_headers, &create_response)
57
57
  end
58
58
 
59
59
  def put_json(url, params, additional_headers = {})
@@ -378,6 +378,24 @@ class GdsApi::PublishingApi < GdsApi::Base
378
378
  get_host_content_for_content_id(content_id, params)
379
379
  end
380
380
 
381
+ # Get events for a specific content_id
382
+ #
383
+ # @param content_id [UUID]
384
+ # @param params [Hash]
385
+ #
386
+ # publishing_api.get_events_for_content_id(
387
+ # "7ac47b33-c09c-4c1d-a9a7-0cfef99081ac",
388
+ # { action: "PutContent", from: "2023-01-01T00:00:00Z", to: "2023-01-05T10:00:00Z" }
389
+ # )
390
+ #
391
+ # @return [GdsApi::Response] A response containing a list of events for that content ID
392
+ #
393
+ # @see https://github.com/alphagov/publishing-api/blob/main/docs/api.md#get-v2contentcontent_idevents
394
+ def get_events_for_content_id(content_id, params = {})
395
+ query = query_string(params)
396
+ get_json("#{endpoint}/v2/content/#{content_id}/events#{query}")
397
+ end
398
+
381
399
  # Returns an Enumerator of content items for the provided
382
400
  # query string parameters.
383
401
  #
@@ -584,6 +602,25 @@ class GdsApi::PublishingApi < GdsApi::Base
584
602
  post_json("#{endpoint}/graphql", query:)
585
603
  end
586
604
 
605
+ # Make a GraphQL query and return the response in the same format as a Content Store content item
606
+ #
607
+ # @param query [String]
608
+ #
609
+ # @return [GdsApi::Response] A response with the result of the GraphQL query formatted like a Content Store content item.
610
+ def graphql_content_item(query)
611
+ create_response = proc do |r|
612
+ updated_body = JSON.parse(r.body).dig("data", "edition")
613
+ updated_response = RestClient::Response.create(
614
+ updated_body.to_json,
615
+ r.net_http_res,
616
+ r.request,
617
+ )
618
+ GdsApi::Response.new(updated_response)
619
+ end
620
+
621
+ post_json("#{endpoint}/graphql", query:, &create_response)
622
+ end
623
+
587
624
  private
588
625
 
589
626
  def content_url(content_id, params = {})
@@ -201,6 +201,19 @@ module GdsApi
201
201
  stub_request(:post, url).with(body: { query: }).to_return(response)
202
202
  end
203
203
 
204
+ # Stub a POST /graphql content item request
205
+ #
206
+ # @param query [String]
207
+ def stub_publishing_api_graphql_content_item(query, response_hash = {})
208
+ url = "#{PUBLISHING_API_ENDPOINT}/graphql"
209
+ response = {
210
+ status: 200,
211
+ body: response_hash.to_json,
212
+ headers: { "Content-Type" => "application/json; charset=utf-8" },
213
+ }
214
+ stub_request(:post, url).with(body: { query: }).to_return(response)
215
+ end
216
+
204
217
  # Assert that a draft was saved and published, and links were updated.
205
218
  # - PUT /v2/content/:content_id
206
219
  # - POST /v2/content/:content_id/publish
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "97.6.0".freeze
2
+ VERSION = "98.1.0".freeze
3
3
  end
data/lib/gds_api.rb CHANGED
@@ -14,7 +14,6 @@ require "gds_api/locations_api"
14
14
  require "gds_api/maslow"
15
15
  require "gds_api/organisations"
16
16
  require "gds_api/publishing_api"
17
- require "gds_api/router"
18
17
  require "gds_api/search"
19
18
  require "gds_api/search_api_v2"
20
19
  require "gds_api/support"
@@ -155,19 +154,6 @@ module GdsApi
155
154
  )
156
155
  end
157
156
 
158
- # Creates a GdsApi::Router adapter for communicating with Router API
159
- #
160
- # This will set a bearer token if a ROUTER_API_BEARER_TOKEN environment
161
- # variable is set
162
- #
163
- # @return [GdsApi::Router]
164
- def self.router(options = {})
165
- GdsApi::Router.new(
166
- Plek.find("router-api"),
167
- { bearer_token: ENV["ROUTER_API_BEARER_TOKEN"] }.merge(options),
168
- )
169
- end
170
-
171
157
  # Creates a GdsApi::Search adapter to access via a search.* hostname
172
158
  #
173
159
  # @return [GdsApi::Search]
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 97.6.0
4
+ version: 98.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-09 00:00:00.000000000 Z
10
+ date: 2024-12-18 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: addressable
@@ -351,7 +350,6 @@ files:
351
350
  - lib/gds_api/publishing_api/special_route_publisher.rb
352
351
  - lib/gds_api/railtie.rb
353
352
  - lib/gds_api/response.rb
354
- - lib/gds_api/router.rb
355
353
  - lib/gds_api/search.rb
356
354
  - lib/gds_api/search_api_v2.rb
357
355
  - lib/gds_api/support.rb
@@ -371,7 +369,6 @@ files:
371
369
  - lib/gds_api/test_helpers/organisations.rb
372
370
  - lib/gds_api/test_helpers/places_manager.rb
373
371
  - lib/gds_api/test_helpers/publishing_api.rb
374
- - lib/gds_api/test_helpers/router.rb
375
372
  - lib/gds_api/test_helpers/search.rb
376
373
  - lib/gds_api/test_helpers/support_api.rb
377
374
  - lib/gds_api/test_helpers/worldwide.rb
@@ -387,7 +384,6 @@ files:
387
384
  homepage: http://github.com/alphagov/gds-api-adapters
388
385
  licenses: []
389
386
  metadata: {}
390
- post_install_message:
391
387
  rdoc_options: []
392
388
  require_paths:
393
389
  - lib
@@ -402,8 +398,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
402
398
  - !ruby/object:Gem::Version
403
399
  version: '0'
404
400
  requirements: []
405
- rubygems_version: 3.5.23
406
- signing_key:
401
+ rubygems_version: 3.6.1
407
402
  specification_version: 4
408
403
  summary: Adapters to work with GDS APIs
409
404
  test_files: []
@@ -1,62 +0,0 @@
1
- require_relative "base"
2
-
3
- class GdsApi::Router < GdsApi::Base
4
- ### Backends
5
-
6
- def get_backend(id)
7
- get_json("#{endpoint}/backends/#{CGI.escape(id)}")
8
- end
9
-
10
- def add_backend(id, url)
11
- put_json("#{endpoint}/backends/#{CGI.escape(id)}", backend: { backend_url: url })
12
- end
13
-
14
- def delete_backend(id)
15
- delete_json("#{endpoint}/backends/#{CGI.escape(id)}")
16
- end
17
-
18
- ### Routes
19
-
20
- def get_route(path)
21
- get_json("#{endpoint}/routes?incoming_path=#{CGI.escape(path)}")
22
- end
23
-
24
- def add_route(path, type, backend_id)
25
- put_json(
26
- "#{endpoint}/routes",
27
- route: {
28
- incoming_path: path,
29
- route_type: type,
30
- handler: "backend",
31
- backend_id:,
32
- },
33
- )
34
- end
35
-
36
- def add_redirect_route(path, type, destination, options = {})
37
- put_json(
38
- "#{endpoint}/routes",
39
- route: {
40
- incoming_path: path,
41
- route_type: type,
42
- handler: "redirect",
43
- redirect_to: destination,
44
- segments_mode: options[:segments_mode],
45
- },
46
- )
47
- end
48
-
49
- def add_gone_route(path, type)
50
- put_json(
51
- "#{endpoint}/routes",
52
- route: { incoming_path: path, route_type: type, handler: "gone" },
53
- )
54
- end
55
-
56
- def delete_route(path, hard_delete: false)
57
- url = "#{endpoint}/routes?incoming_path=#{CGI.escape(path)}"
58
- url += "&hard_delete=true" if hard_delete
59
-
60
- delete_json(url)
61
- end
62
- end
@@ -1,94 +0,0 @@
1
- require "gds_api/test_helpers/json_client_helper"
2
-
3
- module GdsApi
4
- module TestHelpers
5
- module Router
6
- ROUTER_API_ENDPOINT = Plek.find("router-api")
7
-
8
- def stub_router_has_route(path, route, bearer_token = ENV["ROUTER_API_BEARER_TOKEN"])
9
- stub_get_route(path, bearer_token).to_return(
10
- status: 200,
11
- body: route.to_json,
12
- headers: { "Content-Type" => "application/json" },
13
- )
14
- end
15
-
16
- def stub_router_doesnt_have_route(path, bearer_token = ENV["ROUTER_API_BEARER_TOKEN"])
17
- stub_get_route(path, bearer_token).to_return(status: 404)
18
- end
19
-
20
- def stub_router_has_backend_route(path, backend_id:, route_type: "exact", disabled: false)
21
- stub_router_has_route(path, handler: "backend", backend_id:, disabled:, route_type:)
22
- end
23
-
24
- def stub_router_has_redirect_route(path, redirect_to:, route_type: "exact", disabled: false)
25
- stub_router_has_route(path, handler: "redirect", redirect_to:, disabled:, route_type:)
26
- end
27
-
28
- def stub_router_has_gone_route(path, route_type: "exact", disabled: false)
29
- stub_router_has_route(path, handler: "gone", route_type:, disabled:)
30
- end
31
-
32
- def stub_all_router_registration
33
- stub_request(:put, %r{\A#{ROUTER_API_ENDPOINT}/backends/[a-z0-9-]+\z})
34
- stub_request(:put, "#{ROUTER_API_ENDPOINT}/routes")
35
- end
36
-
37
- def stub_router_backend_registration(backend_id, backend_url)
38
- backend = { "backend" => { "backend_url" => backend_url } }
39
- stub_http_request(:put, "#{ROUTER_API_ENDPOINT}/backends/#{backend_id}")
40
- .with(body: backend.to_json)
41
- .to_return(status: 201)
42
- end
43
-
44
- def stub_route_registration(path, type, backend_id)
45
- stub_route_put({
46
- route: {
47
- incoming_path: path,
48
- route_type: type,
49
- handler: "backend",
50
- backend_id:,
51
- },
52
- })
53
- end
54
-
55
- def stub_redirect_registration(path, type, destination, segments_mode = nil)
56
- stub_route_put({
57
- route: {
58
- incoming_path: path,
59
- route_type: type,
60
- handler: "redirect",
61
- redirect_to: destination,
62
- segments_mode:,
63
- },
64
- })
65
- end
66
-
67
- def stub_gone_route_registration(path, type)
68
- stub_route_put({
69
- route: {
70
- incoming_path: path,
71
- route_type: type,
72
- handler: "gone",
73
- },
74
- })
75
- end
76
-
77
- private
78
-
79
- def stub_get_route(path, bearer_token)
80
- stub_http_request(:get, "#{ROUTER_API_ENDPOINT}/routes")
81
- .with(
82
- query: { "incoming_path" => path },
83
- headers: { "Authorization" => "Bearer #{bearer_token}" },
84
- )
85
- end
86
-
87
- def stub_route_put(route)
88
- stub_http_request(:put, "#{ROUTER_API_ENDPOINT}/routes")
89
- .with(body: route.to_json)
90
- .to_return(status: 201)
91
- end
92
- end
93
- end
94
- end