gds-api-adapters 96.0.1 → 96.0.3
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/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
|