gds-api-adapters 4.1.3 → 4.2.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.
- data/lib/gds_api/content_api.rb +16 -7
- data/lib/gds_api/content_api/list_response.rb +90 -0
- data/lib/gds_api/json_client.rb +24 -19
- data/lib/gds_api/test_helpers/content_api.rb +1 -1
- data/lib/gds_api/test_helpers/content_api/artefact_stub.rb +2 -2
- data/lib/gds_api/version.rb +1 -1
- data/test/content_api_test.rb +98 -0
- metadata +65 -54
- data/lib/gds_api/typhoeus_client.rb +0 -3
data/lib/gds_api/content_api.rb
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
require_relative 'base'
|
2
2
|
require_relative 'exceptions'
|
3
|
+
require 'gds_api/content_api/list_response'
|
3
4
|
|
4
5
|
class GdsApi::ContentApi < GdsApi::Base
|
5
6
|
include GdsApi::ExceptionHandling
|
6
7
|
|
7
8
|
def sections
|
8
|
-
|
9
|
+
get_list!("#{base_url}/tags.json?type=section")
|
9
10
|
end
|
10
11
|
|
11
12
|
def root_sections
|
12
|
-
|
13
|
+
get_list!("#{base_url}/tags.json?type=section&root_sections=true")
|
13
14
|
end
|
14
15
|
|
15
16
|
def sub_sections(parent_tag)
|
16
|
-
|
17
|
+
get_list!("#{base_url}/tags.json?type=section&parent_id=#{CGI.escape(parent_tag)}")
|
17
18
|
end
|
18
19
|
|
19
20
|
def tag(tag)
|
@@ -21,22 +22,22 @@ class GdsApi::ContentApi < GdsApi::Base
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def with_tag(tag)
|
24
|
-
|
25
|
+
get_list!("#{base_url}/with_tag.json?tag=#{CGI.escape(tag)}&include_children=1")
|
25
26
|
end
|
26
27
|
|
27
28
|
def curated_list(tag)
|
28
|
-
|
29
|
+
get_list("#{base_url}/with_tag.json?tag=#{CGI.escape(tag)}&sort=curated")
|
29
30
|
end
|
30
31
|
|
31
32
|
def sorted_by(tag, sort_by)
|
32
|
-
|
33
|
+
get_list!("#{base_url}/with_tag.json?tag=#{CGI.escape(tag)}&sort=#{sort_by}")
|
33
34
|
end
|
34
35
|
|
35
36
|
def artefact(slug, params={})
|
36
37
|
edition = params[:edition]
|
37
38
|
snac = params[:snac]
|
38
39
|
|
39
|
-
url = "#{base_url}/#{slug}.json"
|
40
|
+
url = "#{base_url}/#{CGI.escape(slug)}.json"
|
40
41
|
query = params.map { |k,v| "#{k}=#{v}" }
|
41
42
|
if query.any?
|
42
43
|
url += "?#{query.join("&")}"
|
@@ -84,6 +85,14 @@ class GdsApi::ContentApi < GdsApi::Base
|
|
84
85
|
get_batch(last_batch_url, response)
|
85
86
|
end
|
86
87
|
|
88
|
+
def get_list!(url)
|
89
|
+
get_json!(url) { |r| ListResponse.new(r, self) }
|
90
|
+
end
|
91
|
+
|
92
|
+
def get_list(url)
|
93
|
+
get_json(url) { |r| ListResponse.new(r, self) }
|
94
|
+
end
|
95
|
+
|
87
96
|
private
|
88
97
|
def base_url
|
89
98
|
endpoint
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require "json"
|
2
|
+
require "gds_api/response"
|
3
|
+
require "link_header"
|
4
|
+
|
5
|
+
class GdsApi::ContentApi < GdsApi::Base
|
6
|
+
|
7
|
+
# Response class for lists of multiple items from the content API.
|
8
|
+
#
|
9
|
+
# These responses are in a common format, with the list of results contained
|
10
|
+
# under the `results` key. The response may also have previous and subsequent
|
11
|
+
# pages, indicated by entries in the response's `Link` header.
|
12
|
+
class ListResponse < GdsApi::Response
|
13
|
+
|
14
|
+
# The ListResponse is instantiated with a reference back to the API client,
|
15
|
+
# so it can make requests for the subsequent pages
|
16
|
+
def initialize(response, api_client)
|
17
|
+
super(response)
|
18
|
+
@api_client = api_client
|
19
|
+
end
|
20
|
+
|
21
|
+
# Pass calls to `self.each` to the `results` sub-object, so we can iterate
|
22
|
+
# over the response directly
|
23
|
+
def_delegator :results, :each
|
24
|
+
|
25
|
+
def has_next_page?
|
26
|
+
! page_link("next").nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
def next_page
|
30
|
+
# This shouldn't be a performance problem, since the cache will generally
|
31
|
+
# avoid us making multiple requests for the same page, but we shouldn't
|
32
|
+
# allow the data to change once it's already been loaded, so long as we
|
33
|
+
# retain a reference to any one page in the sequence
|
34
|
+
@next_page ||= if has_next_page?
|
35
|
+
@api_client.get_list! page_link("next").href
|
36
|
+
else
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def has_previous_page?
|
42
|
+
! page_link("previous").nil?
|
43
|
+
end
|
44
|
+
|
45
|
+
def previous_page
|
46
|
+
# See the note in `next_page` for why this is memoised
|
47
|
+
@previous_page ||= if has_previous_page?
|
48
|
+
@api_client.get_list! page_link("previous").href
|
49
|
+
else
|
50
|
+
nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Transparently get all results across all pages. Compare this with #each
|
55
|
+
# or #results which only iterate over the current page.
|
56
|
+
#
|
57
|
+
# Example:
|
58
|
+
#
|
59
|
+
# list_response.with_subsequent_pages.each do |result|
|
60
|
+
# ...
|
61
|
+
# end
|
62
|
+
#
|
63
|
+
# or:
|
64
|
+
#
|
65
|
+
# list_response.with_subsequent_pages.count
|
66
|
+
#
|
67
|
+
# Pages of results are fetched on demand. When iterating, that means
|
68
|
+
# fetching pages as results from the current page are exhausted. If you
|
69
|
+
# invoke a method such as #count, this method will fetch all pages at that
|
70
|
+
# point. Note that the responses are stored so subsequent pages will not be
|
71
|
+
# loaded multiple times.
|
72
|
+
def with_subsequent_pages
|
73
|
+
Enumerator.new { |yielder|
|
74
|
+
self.each do |i| yielder << i end
|
75
|
+
if has_next_page?
|
76
|
+
next_page.with_subsequent_pages.each do |i| yielder << i end
|
77
|
+
end
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
def link_header
|
83
|
+
@link_header ||= LinkHeader.parse @net_http_response["Link"]
|
84
|
+
end
|
85
|
+
|
86
|
+
def page_link(rel)
|
87
|
+
link_header.find_link(["rel", rel])
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/lib/gds_api/json_client.rb
CHANGED
@@ -40,32 +40,28 @@ module GdsApi
|
|
40
40
|
do_raw_request(Net::HTTP::Get, url)
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
# Define "safe" methods for each supported HTTP method
|
44
|
+
#
|
45
|
+
# Each "bang method" tries to make a request, but raises an exception if
|
46
|
+
# the response is not successful. These methods discard those exceptions
|
47
|
+
# and return nil.
|
48
|
+
[:get, :post, :put, :delete].each do |http_method|
|
49
|
+
method_name = "#{http_method}_json"
|
50
|
+
define_method method_name do |url, *args|
|
51
|
+
ignoring GdsApi::HTTPNotFound do
|
52
|
+
send (method_name + "!"), url, *args
|
53
|
+
end
|
46
54
|
end
|
47
55
|
end
|
48
56
|
|
49
|
-
def get_json!(url)
|
50
|
-
@cache[url] ||= do_json_request(Net::HTTP::Get, url)
|
51
|
-
end
|
52
|
-
|
53
|
-
def post_json(url, params)
|
54
|
-
ignoring GdsApi::HTTPNotFound do
|
55
|
-
post_json! url, params
|
56
|
-
end
|
57
|
+
def get_json!(url, &create_response)
|
58
|
+
@cache[url] ||= do_json_request(Net::HTTP::Get, url, nil, &create_response)
|
57
59
|
end
|
58
60
|
|
59
61
|
def post_json!(url, params)
|
60
62
|
do_json_request(Net::HTTP::Post, url, params)
|
61
63
|
end
|
62
64
|
|
63
|
-
def put_json(url, params)
|
64
|
-
ignoring GdsApi::HTTPNotFound do
|
65
|
-
put_json! url, params
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
65
|
def put_json!(url, params)
|
70
66
|
do_json_request(Net::HTTP::Put, url, params)
|
71
67
|
end
|
@@ -80,12 +76,21 @@ module GdsApi
|
|
80
76
|
response.body
|
81
77
|
end
|
82
78
|
|
83
|
-
|
79
|
+
# method_class: the Net::HTTP class to use, e.g. Net::HTTP::Get
|
80
|
+
# url: the request URL
|
81
|
+
# params: the data to send (JSON-serialised) in the request body
|
82
|
+
# create_response: optional block to instantiate a custom response object
|
83
|
+
# from the Net::HTTPResponse
|
84
|
+
def do_json_request(method_class, url, params = nil, &create_response)
|
85
|
+
|
84
86
|
response, loggable = do_request(method_class, url, params)
|
85
87
|
|
88
|
+
# If no custom response is given, just instantiate Response
|
89
|
+
create_response ||= Proc.new { |r| Response.new(r) }
|
90
|
+
|
86
91
|
if response.is_a?(Net::HTTPSuccess)
|
87
92
|
logger.info loggable.merge(status: 'success', end_time: Time.now.to_f).to_json
|
88
|
-
|
93
|
+
create_response.call(response)
|
89
94
|
elsif response.is_a?(Net::HTTPNotFound)
|
90
95
|
raise GdsApi::HTTPNotFound.new(response.code.to_i)
|
91
96
|
else
|
@@ -135,7 +135,7 @@ module GdsApi
|
|
135
135
|
singular_response_base.merge(
|
136
136
|
"title" => titleize_slug(slug),
|
137
137
|
"format" => "guide",
|
138
|
-
"id" => "#{CONTENT_API_ENDPOINT}/#{slug}.json",
|
138
|
+
"id" => "#{CONTENT_API_ENDPOINT}/#{CGI.escape(slug)}.json",
|
139
139
|
"web_url" => "http://frontend.test.gov.uk/#{slug}",
|
140
140
|
"details" => {
|
141
141
|
"need_id" => "1234",
|
@@ -41,7 +41,7 @@ module GdsApi
|
|
41
41
|
|
42
42
|
private
|
43
43
|
def url_without_query
|
44
|
-
"#{CONTENT_API_ENDPOINT}/#{slug}.json"
|
44
|
+
"#{CONTENT_API_ENDPOINT}/#{CGI.escape(slug)}.json"
|
45
45
|
end
|
46
46
|
|
47
47
|
# Ensure that all keys and values are strings
|
@@ -54,4 +54,4 @@ module GdsApi
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
57
|
-
end
|
57
|
+
end
|
data/lib/gds_api/version.rb
CHANGED
data/test/content_api_test.rb
CHANGED
@@ -14,8 +14,94 @@ describe GdsApi::ContentApi do
|
|
14
14
|
it "should show a list of sections" do
|
15
15
|
content_api_has_root_sections(["crime"])
|
16
16
|
response = @api.sections
|
17
|
+
|
18
|
+
# Old-style dictionary access
|
17
19
|
first_section = response["results"][0]
|
18
20
|
assert_equal "#{@base_api_url}/tags/crime.json", first_section["id"]
|
21
|
+
|
22
|
+
# Also check attribute access
|
23
|
+
first_section = response.first
|
24
|
+
assert_equal "#{@base_api_url}/tags/crime.json", first_section.id
|
25
|
+
end
|
26
|
+
|
27
|
+
def section_page_url(page_parameter)
|
28
|
+
if page_parameter
|
29
|
+
"#{GdsApi::TestHelpers::ContentApi::CONTENT_API_ENDPOINT}/tags.json?type=section&page=#{page_parameter}"
|
30
|
+
else
|
31
|
+
"#{GdsApi::TestHelpers::ContentApi::CONTENT_API_ENDPOINT}/tags.json?type=section"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def stub_section_page(page_parameter, options)
|
36
|
+
total_pages = options.fetch :of
|
37
|
+
|
38
|
+
url = section_page_url(page_parameter)
|
39
|
+
|
40
|
+
page_number = page_parameter || 1
|
41
|
+
# e.g. page 2 -> 11..20
|
42
|
+
range_start = (page_number - 1) * 10 + 1
|
43
|
+
range_end = page_number * 10
|
44
|
+
tags = (range_start..range_end).map { |number|
|
45
|
+
tag_for_slug("section-#{number}", "section")
|
46
|
+
}
|
47
|
+
body = plural_response_base.merge(
|
48
|
+
"results" => tags
|
49
|
+
)
|
50
|
+
|
51
|
+
links = []
|
52
|
+
if page_number > 1
|
53
|
+
links << "<#{section_page_url(page_number - 1)}>; rel=\"previous\""
|
54
|
+
end
|
55
|
+
if page_number < total_pages
|
56
|
+
links << "<#{section_page_url(page_number + 1)}>; rel=\"next\""
|
57
|
+
end
|
58
|
+
|
59
|
+
stub_request(:get, url).to_return(
|
60
|
+
status: 200,
|
61
|
+
body: body.to_json,
|
62
|
+
headers: {"Link" => links.join(",")}
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should allow iteration across pages" do
|
67
|
+
[nil, 2].each do |page_parameter|
|
68
|
+
stub_section_page(page_parameter, of: 2)
|
69
|
+
end
|
70
|
+
|
71
|
+
sections = @api.sections
|
72
|
+
assert_equal 20, sections.with_subsequent_pages.count
|
73
|
+
assert_equal "Section 20", sections.with_subsequent_pages.to_a.last.title
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should iterate across three or more pages" do
|
77
|
+
[nil, 2, 3].each do |page_parameter|
|
78
|
+
stub_section_page(page_parameter, of: 3)
|
79
|
+
end
|
80
|
+
|
81
|
+
sections = @api.sections
|
82
|
+
assert_equal 30, sections.with_subsequent_pages.count
|
83
|
+
assert_equal "Section 30", sections.with_subsequent_pages.to_a.last.title
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should not load a page multiple times" do
|
87
|
+
[nil, 2].each do |page_parameter|
|
88
|
+
stub_section_page(page_parameter, of: 2)
|
89
|
+
end
|
90
|
+
|
91
|
+
sections = @api.sections
|
92
|
+
|
93
|
+
3.times do
|
94
|
+
# Loop through all the items, just to make sure we load all the pages
|
95
|
+
sections.with_subsequent_pages.each do end
|
96
|
+
end
|
97
|
+
|
98
|
+
assert_requested :get, section_page_url(2), times: 1
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should display a single page of sections" do
|
102
|
+
stub_section_page(nil, of: 1)
|
103
|
+
sections = @api.sections
|
104
|
+
assert_equal 10, sections.with_subsequent_pages.count
|
19
105
|
end
|
20
106
|
end
|
21
107
|
|
@@ -39,6 +125,13 @@ describe GdsApi::ContentApi do
|
|
39
125
|
@api.artefact("devolution-uk", edition: 3)
|
40
126
|
end
|
41
127
|
end
|
128
|
+
|
129
|
+
it "should be able to fetch artefacts with a '/' in the slug" do
|
130
|
+
content_api_has_an_artefact("travel-advice/aruba")
|
131
|
+
response = @api.artefact("travel-advice/aruba")
|
132
|
+
assert_requested(:get, "#{@base_api_url}/travel-advice%2Faruba.json")
|
133
|
+
assert_equal "#{@base_api_url}/travel-advice%2Faruba.json", response["id"]
|
134
|
+
end
|
42
135
|
end
|
43
136
|
|
44
137
|
describe "tags" do
|
@@ -50,8 +143,13 @@ describe GdsApi::ContentApi do
|
|
50
143
|
}.to_json
|
51
144
|
stub_request(:get, api_url).to_return(:status => 200, :body => json)
|
52
145
|
response = @api.with_tag("crime-and-justice")
|
146
|
+
|
147
|
+
# Old dictionary-style access
|
53
148
|
subsection = response["results"][0]
|
54
149
|
assert_equal "Complain about a claims company", subsection["title"]
|
150
|
+
|
151
|
+
# Attribute access
|
152
|
+
assert_equal "Complain about a claims company", response.first.title
|
55
153
|
end
|
56
154
|
|
57
155
|
it "should return tag tree for a specific tag" do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 4.
|
5
|
+
version: 4.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James Stewart
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2013-01-16 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: plek
|
@@ -35,8 +35,19 @@ dependencies:
|
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: *id002
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
38
|
+
name: link_header
|
39
39
|
requirement: &id003 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: lrucache
|
50
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
40
51
|
none: false
|
41
52
|
requirements:
|
42
53
|
- - ~>
|
@@ -44,10 +55,10 @@ dependencies:
|
|
44
55
|
version: 0.1.1
|
45
56
|
type: :runtime
|
46
57
|
prerelease: false
|
47
|
-
version_requirements: *
|
58
|
+
version_requirements: *id004
|
48
59
|
- !ruby/object:Gem::Dependency
|
49
60
|
name: rdoc
|
50
|
-
requirement: &
|
61
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
51
62
|
none: false
|
52
63
|
requirements:
|
53
64
|
- - "="
|
@@ -55,10 +66,10 @@ dependencies:
|
|
55
66
|
version: "3.12"
|
56
67
|
type: :development
|
57
68
|
prerelease: false
|
58
|
-
version_requirements: *
|
69
|
+
version_requirements: *id005
|
59
70
|
- !ruby/object:Gem::Dependency
|
60
71
|
name: rake
|
61
|
-
requirement: &
|
72
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
62
73
|
none: false
|
63
74
|
requirements:
|
64
75
|
- - ~>
|
@@ -66,10 +77,10 @@ dependencies:
|
|
66
77
|
version: 0.9.2.2
|
67
78
|
type: :development
|
68
79
|
prerelease: false
|
69
|
-
version_requirements: *
|
80
|
+
version_requirements: *id006
|
70
81
|
- !ruby/object:Gem::Dependency
|
71
82
|
name: webmock
|
72
|
-
requirement: &
|
83
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
73
84
|
none: false
|
74
85
|
requirements:
|
75
86
|
- - ~>
|
@@ -77,10 +88,10 @@ dependencies:
|
|
77
88
|
version: "1.8"
|
78
89
|
type: :development
|
79
90
|
prerelease: false
|
80
|
-
version_requirements: *
|
91
|
+
version_requirements: *id007
|
81
92
|
- !ruby/object:Gem::Dependency
|
82
93
|
name: mocha
|
83
|
-
requirement: &
|
94
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
84
95
|
none: false
|
85
96
|
requirements:
|
86
97
|
- - ~>
|
@@ -88,10 +99,10 @@ dependencies:
|
|
88
99
|
version: 0.12.4
|
89
100
|
type: :development
|
90
101
|
prerelease: false
|
91
|
-
version_requirements: *
|
102
|
+
version_requirements: *id008
|
92
103
|
- !ruby/object:Gem::Dependency
|
93
104
|
name: minitest
|
94
|
-
requirement: &
|
105
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
95
106
|
none: false
|
96
107
|
requirements:
|
97
108
|
- - ~>
|
@@ -99,10 +110,10 @@ dependencies:
|
|
99
110
|
version: 3.4.0
|
100
111
|
type: :development
|
101
112
|
prerelease: false
|
102
|
-
version_requirements: *
|
113
|
+
version_requirements: *id009
|
103
114
|
- !ruby/object:Gem::Dependency
|
104
115
|
name: rack
|
105
|
-
requirement: &
|
116
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
106
117
|
none: false
|
107
118
|
requirements:
|
108
119
|
- - ">="
|
@@ -110,10 +121,10 @@ dependencies:
|
|
110
121
|
version: "0"
|
111
122
|
type: :development
|
112
123
|
prerelease: false
|
113
|
-
version_requirements: *
|
124
|
+
version_requirements: *id010
|
114
125
|
- !ruby/object:Gem::Dependency
|
115
126
|
name: simplecov
|
116
|
-
requirement: &
|
127
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
117
128
|
none: false
|
118
129
|
requirements:
|
119
130
|
- - ~>
|
@@ -121,10 +132,10 @@ dependencies:
|
|
121
132
|
version: 0.5.4
|
122
133
|
type: :development
|
123
134
|
prerelease: false
|
124
|
-
version_requirements: *
|
135
|
+
version_requirements: *id011
|
125
136
|
- !ruby/object:Gem::Dependency
|
126
137
|
name: simplecov-rcov
|
127
|
-
requirement: &
|
138
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
128
139
|
none: false
|
129
140
|
requirements:
|
130
141
|
- - ">="
|
@@ -132,10 +143,10 @@ dependencies:
|
|
132
143
|
version: "0"
|
133
144
|
type: :development
|
134
145
|
prerelease: false
|
135
|
-
version_requirements: *
|
146
|
+
version_requirements: *id012
|
136
147
|
- !ruby/object:Gem::Dependency
|
137
148
|
name: gem_publisher
|
138
|
-
requirement: &
|
149
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
139
150
|
none: false
|
140
151
|
requirements:
|
141
152
|
- - ~>
|
@@ -143,10 +154,10 @@ dependencies:
|
|
143
154
|
version: 1.1.1
|
144
155
|
type: :development
|
145
156
|
prerelease: false
|
146
|
-
version_requirements: *
|
157
|
+
version_requirements: *id013
|
147
158
|
- !ruby/object:Gem::Dependency
|
148
159
|
name: timecop
|
149
|
-
requirement: &
|
160
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
150
161
|
none: false
|
151
162
|
requirements:
|
152
163
|
- - ~>
|
@@ -154,8 +165,8 @@ dependencies:
|
|
154
165
|
version: 0.5.1
|
155
166
|
type: :development
|
156
167
|
prerelease: false
|
157
|
-
version_requirements: *
|
158
|
-
description: A set of adapters providing easy access to the GDS
|
168
|
+
version_requirements: *id014
|
169
|
+
description: A set of adapters providing easy access to the GDS GOV.UK APIs
|
159
170
|
email:
|
160
171
|
- jystewart@gmail.com
|
161
172
|
executables: []
|
@@ -166,41 +177,41 @@ extra_rdoc_files: []
|
|
166
177
|
|
167
178
|
files:
|
168
179
|
- lib/gds_api/version.rb
|
169
|
-
- lib/gds_api/
|
180
|
+
- lib/gds_api/base.rb
|
181
|
+
- lib/gds_api/licence_application.rb
|
170
182
|
- lib/gds_api/panopticon/registerer.rb
|
171
|
-
- lib/gds_api/
|
172
|
-
- lib/gds_api/content_api.rb
|
183
|
+
- lib/gds_api/needotron.rb
|
173
184
|
- lib/gds_api/imminence.rb
|
174
|
-
- lib/gds_api/
|
175
|
-
- lib/gds_api/
|
176
|
-
- lib/gds_api/
|
185
|
+
- lib/gds_api/rummager.rb
|
186
|
+
- lib/gds_api/content_api.rb
|
187
|
+
- lib/gds_api/exceptions.rb
|
188
|
+
- lib/gds_api/json_client.rb
|
189
|
+
- lib/gds_api/core-ext/openstruct.rb
|
190
|
+
- lib/gds_api/response.rb
|
191
|
+
- lib/gds_api/content_api/list_response.rb
|
192
|
+
- lib/gds_api/publisher.rb
|
177
193
|
- lib/gds_api/test_helpers/licence_application.rb
|
194
|
+
- lib/gds_api/test_helpers/imminence.rb
|
195
|
+
- lib/gds_api/test_helpers/content_api.rb
|
178
196
|
- lib/gds_api/test_helpers/content_api/artefact_stub.rb
|
197
|
+
- lib/gds_api/test_helpers/publisher.rb
|
179
198
|
- lib/gds_api/test_helpers/panopticon.rb
|
180
199
|
- lib/gds_api/test_helpers/json_client_helper.rb
|
181
|
-
- lib/gds_api/licence_application.rb
|
182
|
-
- lib/gds_api/base.rb
|
183
|
-
- lib/gds_api/json_client.rb
|
184
|
-
- lib/gds_api/response.rb
|
185
|
-
- lib/gds_api/rummager.rb
|
186
|
-
- lib/gds_api/panopticon.rb
|
187
|
-
- lib/gds_api/core-ext/openstruct.rb
|
188
200
|
- lib/gds_api/part_methods.rb
|
189
|
-
- lib/gds_api/
|
190
|
-
- lib/gds_api/exceptions.rb
|
201
|
+
- lib/gds_api/panopticon.rb
|
191
202
|
- lib/gds_api/helpers.rb
|
192
203
|
- README.md
|
193
204
|
- Rakefile
|
194
|
-
- test/panopticon_api_test.rb
|
195
|
-
- test/publisher_api_test.rb
|
196
205
|
- test/rummager_test.rb
|
206
|
+
- test/publisher_api_test.rb
|
207
|
+
- test/licence_application_api_test.rb
|
208
|
+
- test/panopticon_api_test.rb
|
197
209
|
- test/imminence_api_test.rb
|
198
|
-
- test/panopticon_registerer_test.rb
|
199
|
-
- test/content_api_test.rb
|
200
210
|
- test/json_client_test.rb
|
201
|
-
- test/gds_api_base_test.rb
|
202
|
-
- test/licence_application_api_test.rb
|
203
211
|
- test/test_helper.rb
|
212
|
+
- test/gds_api_base_test.rb
|
213
|
+
- test/content_api_test.rb
|
214
|
+
- test/panopticon_registerer_test.rb
|
204
215
|
homepage: http://github.com/alphagov/gds-api-adapters
|
205
216
|
licenses: []
|
206
217
|
|
@@ -214,7 +225,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
214
225
|
requirements:
|
215
226
|
- - ">="
|
216
227
|
- !ruby/object:Gem::Version
|
217
|
-
hash:
|
228
|
+
hash: -1781835164135696191
|
218
229
|
segments:
|
219
230
|
- 0
|
220
231
|
version: "0"
|
@@ -223,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
234
|
requirements:
|
224
235
|
- - ">="
|
225
236
|
- !ruby/object:Gem::Version
|
226
|
-
hash:
|
237
|
+
hash: -1781835164135696191
|
227
238
|
segments:
|
228
239
|
- 0
|
229
240
|
version: "0"
|
@@ -235,13 +246,13 @@ signing_key:
|
|
235
246
|
specification_version: 3
|
236
247
|
summary: Adapters to work with GDS APIs
|
237
248
|
test_files:
|
238
|
-
- test/panopticon_api_test.rb
|
239
|
-
- test/publisher_api_test.rb
|
240
249
|
- test/rummager_test.rb
|
250
|
+
- test/publisher_api_test.rb
|
251
|
+
- test/licence_application_api_test.rb
|
252
|
+
- test/panopticon_api_test.rb
|
241
253
|
- test/imminence_api_test.rb
|
242
|
-
- test/panopticon_registerer_test.rb
|
243
|
-
- test/content_api_test.rb
|
244
254
|
- test/json_client_test.rb
|
245
|
-
- test/gds_api_base_test.rb
|
246
|
-
- test/licence_application_api_test.rb
|
247
255
|
- test/test_helper.rb
|
256
|
+
- test/gds_api_base_test.rb
|
257
|
+
- test/content_api_test.rb
|
258
|
+
- test/panopticon_registerer_test.rb
|