gds-api-adapters 96.0.1 → 96.0.3
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/lib/gds_api/publishing_api.rb +63 -0
- data/lib/gds_api/support_api.rb +16 -0
- data/lib/gds_api/test_helpers/publishing_api.rb +90 -0
- data/lib/gds_api/test_helpers/support_api.rb +12 -0
- data/lib/gds_api/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3182c86f70e20b3d92c0cf4f28f63a487e343dff7394d41de0f0953b51fde3fa
|
4
|
+
data.tar.gz: 2e31481af69353c207b13cc4e94c6e59a7f151c94c5eda22d5b2a0d0c4ef86ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b4d1743e125d8d1d8928fc7d4bc705fee3dd0eae19342d75d5c07f28dcea2590f8986efc3fd4671885ad610c311cf88deb62bccecd580cef39c3231cbe93834
|
7
|
+
data.tar.gz: a3a01fd52aa66cf83a346c90a025fa7972aee550f19f81de5ff3d033d98415101cf900a2e3e455286e245675a6aaa85ed7a3c1c93a6ac974355cb59eadac4845
|
@@ -337,6 +337,22 @@ class GdsApi::PublishingApi < GdsApi::Base
|
|
337
337
|
get_json("#{endpoint}/v2/content#{query}")
|
338
338
|
end
|
339
339
|
|
340
|
+
# Get content items which embed a reusable content_id
|
341
|
+
#
|
342
|
+
# No params are currently permitted.
|
343
|
+
#
|
344
|
+
# @example
|
345
|
+
#
|
346
|
+
# publishing_api.get_content_by_embedded_document("4b148ebc-b2bb-40db-8e48-dd8cff363ff7")
|
347
|
+
#
|
348
|
+
# @return [GdsApi::Response] A response containing a summarised list of the content items which embed the target.
|
349
|
+
# The content items returned will be in either the draft of published state.
|
350
|
+
#
|
351
|
+
# @see https://github.com/alphagov/publishing-api/blob/main/docs/api.md#get-v2contentcontent_idembedded
|
352
|
+
def get_content_by_embedded_document(content_id)
|
353
|
+
get_json("#{endpoint}/v2/content/#{content_id}/embedded")
|
354
|
+
end
|
355
|
+
|
340
356
|
# Returns an Enumerator of content items for the provided
|
341
357
|
# query string parameters.
|
342
358
|
#
|
@@ -487,6 +503,53 @@ class GdsApi::PublishingApi < GdsApi::Base
|
|
487
503
|
e
|
488
504
|
end
|
489
505
|
|
506
|
+
# Get all schemas
|
507
|
+
#
|
508
|
+
# @return [GdsApi::Response] A map of schema names with JSON schemas.
|
509
|
+
#
|
510
|
+
# @example
|
511
|
+
#
|
512
|
+
# publishing_api.get_schemas()
|
513
|
+
# # => {
|
514
|
+
# "email_address" => {
|
515
|
+
# "type": "email_address",
|
516
|
+
# "required": ["email"],
|
517
|
+
# "properties": {
|
518
|
+
# "email": { "type" => "string" },
|
519
|
+
# },
|
520
|
+
# }
|
521
|
+
# }
|
522
|
+
#
|
523
|
+
# @see https://github.com/alphagov/publishing-api/blob/main/docs/api.md#get-v2schemas
|
524
|
+
def get_schemas
|
525
|
+
get_json("#{endpoint}/v2/schemas").to_hash
|
526
|
+
end
|
527
|
+
|
528
|
+
# Get a content schema by name
|
529
|
+
#
|
530
|
+
# @param schema_name [String]
|
531
|
+
#
|
532
|
+
# @return [GdsApi::Response] A response mapping schema name with JSON schema.
|
533
|
+
#
|
534
|
+
# @example
|
535
|
+
#
|
536
|
+
# publishing_api.get_schema("email_address")
|
537
|
+
# # => {
|
538
|
+
# "email_address" => {
|
539
|
+
# "type": "email_address",
|
540
|
+
# "required": ["email"],
|
541
|
+
# "properties": {
|
542
|
+
# "email": { "type" => "string" },
|
543
|
+
# },
|
544
|
+
# }
|
545
|
+
# }
|
546
|
+
#
|
547
|
+
# @raise [HTTPNotFound] when the schema is not found
|
548
|
+
# @see https://github.com/alphagov/publishing-api/blob/main/docs/api.md#get-v2schemasschema_name
|
549
|
+
def get_schema(schema_name)
|
550
|
+
get_json("#{endpoint}/v2/schemas/#{schema_name}").to_hash
|
551
|
+
end
|
552
|
+
|
490
553
|
private
|
491
554
|
|
492
555
|
def content_url(content_id, params = {})
|
data/lib/gds_api/support_api.rb
CHANGED
@@ -22,6 +22,22 @@ class GdsApi::SupportApi < GdsApi::Base
|
|
22
22
|
post_json("#{endpoint}/anonymous-feedback/global-export-requests", global_export_request: request_details)
|
23
23
|
end
|
24
24
|
|
25
|
+
# Raise a support ticket
|
26
|
+
# Makes a +POST+ request to support-api to create a new support ticket.
|
27
|
+
#
|
28
|
+
# @params params [Hash] Any attributes that relate to creating a new support ticket.
|
29
|
+
|
30
|
+
# @example
|
31
|
+
# SupportApi.raise_support_ticket(
|
32
|
+
# subject: "Feedback for app",
|
33
|
+
# tags: ["app_name"]
|
34
|
+
# user_agent: "Safari",
|
35
|
+
# description: "Ticket details go here.",
|
36
|
+
# )
|
37
|
+
def raise_support_ticket(params)
|
38
|
+
post_json("#{endpoint}/support-tickets", params)
|
39
|
+
end
|
40
|
+
|
25
41
|
# Create a Page Improvement
|
26
42
|
#
|
27
43
|
# Makes a +POST+ request to the support api to create a Page Improvement.
|
@@ -340,6 +340,43 @@ module GdsApi
|
|
340
340
|
.to_return(status: 200, body: body.to_json, headers: {})
|
341
341
|
end
|
342
342
|
|
343
|
+
# Stub GET /v2/content/:content_id/embedded to return a list of content items that embed the target content_id
|
344
|
+
#
|
345
|
+
# @example
|
346
|
+
#
|
347
|
+
# stub_publishing_api_has_content_(
|
348
|
+
# content_id: "9faacf5c-f4e6-4bf9-ba90-413e997c1f22" # this is the content_id for a reusable edition
|
349
|
+
# total: 1 # the number of results returned
|
350
|
+
# results: [{
|
351
|
+
# "title" => "foo",
|
352
|
+
# "document_type" => "document",
|
353
|
+
# "base_path" => "/foo",
|
354
|
+
# "content_id" => "e60fae2a-5490-4e2f-9e80-2093c47608d4",
|
355
|
+
# "primary_publishing_organisation" => {
|
356
|
+
# "content_id" => "7662e1e7-79f9-4d0a-b754-6232186851f6",
|
357
|
+
# "title" => "bar",
|
358
|
+
# "base_path" => "/organisation/bar",
|
359
|
+
# },
|
360
|
+
# }] # an array of content items that embed the target content_id
|
361
|
+
# )
|
362
|
+
# @param content_id [UUID, Mocha::ParameterMatchers::Anything]
|
363
|
+
# @param total Integer
|
364
|
+
# @param params [Hash]
|
365
|
+
def stub_publishing_api_has_embedded_content(content_id:, total: 0, results: [])
|
366
|
+
url = if content_id.is_a?(Mocha::ParameterMatchers::Anything)
|
367
|
+
%r{\A#{PUBLISHING_API_V2_ENDPOINT}/content/[0-9a-fA-F-]{36}/embedded}
|
368
|
+
else
|
369
|
+
"#{PUBLISHING_API_V2_ENDPOINT}/content/#{content_id}/embedded"
|
370
|
+
end
|
371
|
+
|
372
|
+
stub_request(:get, url)
|
373
|
+
.to_return(body: {
|
374
|
+
"content_id" => content_id,
|
375
|
+
"total" => total,
|
376
|
+
"results" => results,
|
377
|
+
}.to_json)
|
378
|
+
end
|
379
|
+
|
343
380
|
# This method has been refactored into publishing_api_has_content (above)
|
344
381
|
# publishing_api_has_content allows for flexible passing in of arguments, please use instead
|
345
382
|
def stub_publishing_api_has_fields_for_document(document_type, items, fields)
|
@@ -802,6 +839,59 @@ module GdsApi
|
|
802
839
|
body: { error: }.to_json)
|
803
840
|
end
|
804
841
|
|
842
|
+
# Stub a request to get a schema by schema name
|
843
|
+
#
|
844
|
+
# @param [String] schema name
|
845
|
+
#
|
846
|
+
# @example
|
847
|
+
# stub_publishing_api_has_schemas_for_schema_name(
|
848
|
+
# "email_address",
|
849
|
+
# { "email_address" => {
|
850
|
+
# "type": "email_address",
|
851
|
+
# "required": ["email"],
|
852
|
+
# "properties": {
|
853
|
+
# "email": { "type" => "string" },
|
854
|
+
# },
|
855
|
+
# },
|
856
|
+
# }
|
857
|
+
# )
|
858
|
+
def stub_publishing_api_has_schemas_for_schema_name(schema_name, schema)
|
859
|
+
url = "#{PUBLISHING_API_V2_ENDPOINT}/schemas/#{schema_name}"
|
860
|
+
stub_request(:get, url).to_return(status: 200, body: schema.to_json, headers: {})
|
861
|
+
end
|
862
|
+
|
863
|
+
def stub_publishing_api_schema_name_path_to_return_not_found(schema_name)
|
864
|
+
url = "#{PUBLISHING_API_V2_ENDPOINT}/schemas/#{schema_name}"
|
865
|
+
stub_request(:get, url).to_return(status: 404, headers: { "Content-Type" => "application/json; charset=utf-8" })
|
866
|
+
end
|
867
|
+
|
868
|
+
# Stub a request to get all schemas
|
869
|
+
#
|
870
|
+
#
|
871
|
+
# @example
|
872
|
+
# stub_publishing_api_has_schemas(
|
873
|
+
# {
|
874
|
+
# "email_address" => {
|
875
|
+
# "type": "email_address",
|
876
|
+
# "required": ["email"],
|
877
|
+
# "properties": {
|
878
|
+
# "email": { "type" => "string" },
|
879
|
+
# },
|
880
|
+
# },
|
881
|
+
# "tax_bracket" => {
|
882
|
+
# "type": "tax_bracket",
|
883
|
+
# "required": ["code"],
|
884
|
+
# "properties": {
|
885
|
+
# "code": { "type" => "string" },
|
886
|
+
# },
|
887
|
+
# }
|
888
|
+
# }
|
889
|
+
# )
|
890
|
+
def stub_publishing_api_has_schemas(schemas)
|
891
|
+
url = "#{PUBLISHING_API_V2_ENDPOINT}/schemas"
|
892
|
+
stub_request(:get, url).to_return(status: 200, body: schemas.to_json, headers: {})
|
893
|
+
end
|
894
|
+
|
805
895
|
private
|
806
896
|
|
807
897
|
def stub_publishing_api_put(*args)
|
@@ -150,6 +150,18 @@ module GdsApi
|
|
150
150
|
.to_return(status: 200, body: response_body.to_json)
|
151
151
|
end
|
152
152
|
|
153
|
+
def stub_support_api_valid_raise_support_ticket(params)
|
154
|
+
post_stub = stub_http_request(:post, "#{SUPPORT_API_ENDPOINT}/support-tickets")
|
155
|
+
post_stub.with(body: params)
|
156
|
+
post_stub.to_return(status: 201, body: { status: "success" }.to_json)
|
157
|
+
end
|
158
|
+
|
159
|
+
def stub_support_api_invalid_raise_support_ticket(params)
|
160
|
+
post_stub = stub_http_request(:post, "#{SUPPORT_API_ENDPOINT}/support-tickets")
|
161
|
+
post_stub.with(body: params)
|
162
|
+
post_stub.to_return(status: 422, body: { status: "error" }.to_json)
|
163
|
+
end
|
164
|
+
|
153
165
|
def stub_any_support_api_call
|
154
166
|
stub_request(:any, %r{\A#{SUPPORT_API_ENDPOINT}})
|
155
167
|
end
|
data/lib/gds_api/version.rb
CHANGED
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: 96.0.
|
4
|
+
version: 96.0.3
|
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: 2024-
|
11
|
+
date: 2024-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -268,14 +268,14 @@ dependencies:
|
|
268
268
|
requirements:
|
269
269
|
- - '='
|
270
270
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
271
|
+
version: 5.0.2
|
272
272
|
type: :development
|
273
273
|
prerelease: false
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
276
|
- - '='
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version:
|
278
|
+
version: 5.0.2
|
279
279
|
- !ruby/object:Gem::Dependency
|
280
280
|
name: simplecov
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -402,7 +402,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
402
402
|
- !ruby/object:Gem::Version
|
403
403
|
version: '0'
|
404
404
|
requirements: []
|
405
|
-
rubygems_version: 3.5.
|
405
|
+
rubygems_version: 3.5.18
|
406
406
|
signing_key:
|
407
407
|
specification_version: 4
|
408
408
|
summary: Adapters to work with GDS APIs
|