gds-api-adapters 63.4.0 → 67.0.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 +4 -4
- data/README.md +3 -23
- data/Rakefile +7 -8
- data/lib/gds_api.rb +3 -15
- data/lib/gds_api/asset_manager.rb +1 -1
- data/lib/gds_api/base.rb +8 -3
- data/lib/gds_api/email_alert_api.rb +9 -9
- data/lib/gds_api/exceptions.rb +3 -4
- data/lib/gds_api/imminence.rb +3 -3
- data/lib/gds_api/json_client.rb +8 -8
- data/lib/gds_api/list_response.rb +6 -6
- data/lib/gds_api/performance_platform/data_out.rb +21 -21
- data/lib/gds_api/publishing_api.rb +2 -2
- data/lib/gds_api/response.rb +80 -6
- data/lib/gds_api/test_helpers/asset_manager.rb +0 -17
- data/lib/gds_api/test_helpers/calendars.rb +0 -9
- data/lib/gds_api/test_helpers/content_store.rb +0 -9
- data/lib/gds_api/test_helpers/email_alert_api.rb +9 -33
- data/lib/gds_api/test_helpers/imminence.rb +11 -14
- data/lib/gds_api/test_helpers/licence_application.rb +8 -16
- data/lib/gds_api/test_helpers/link_checker_api.rb +0 -8
- data/lib/gds_api/test_helpers/local_links_manager.rb +0 -13
- data/lib/gds_api/test_helpers/mapit.rb +15 -26
- data/lib/gds_api/test_helpers/organisations.rb +13 -18
- data/lib/gds_api/test_helpers/performance_platform/data_out.rb +34 -34
- data/lib/gds_api/test_helpers/publishing_api.rb +38 -59
- data/lib/gds_api/test_helpers/search.rb +5 -5
- data/lib/gds_api/test_helpers/support.rb +0 -5
- data/lib/gds_api/test_helpers/support_api.rb +16 -20
- data/lib/gds_api/test_helpers/worldwide.rb +52 -32
- data/lib/gds_api/version.rb +1 -1
- metadata +14 -31
- data/lib/gds_api/publishing_api_v2.rb +0 -14
- data/lib/gds_api/test_helpers/alias_deprecated.rb +0 -13
- data/lib/gds_api/test_helpers/publishing_api_v2.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98cbc4b338641aff5589875074e2fb2d6ef4227a004f04855cfffbf9c0eb5348
|
4
|
+
data.tar.gz: 5934de7d813457a5cf01c026ff91bed99445492a43df9c9704abc123db140c7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00bab1a4b50de5937794758bbdca11c093d3d58c147fed73cb1c3ad89c0c1a9c8d4e2cac2691a31540d9d5c1f92de9a413c25b339a1430dbc367e7f5649afe08
|
7
|
+
data.tar.gz: 14a690b77a277f543b800d48da87cac0c78e6edaf2ced0e04a5f9244104707b3f3cf34e77f9cba0cd39e3fca0c53a2672659a17b00611d575d28c43bd25d236b
|
data/README.md
CHANGED
@@ -5,9 +5,7 @@ A set of API adapters to work with the GDS APIs.
|
|
5
5
|
Example usage:
|
6
6
|
|
7
7
|
```ruby
|
8
|
-
|
9
|
-
search = GdsApi::Search.new(Plek.new.find('search))
|
10
|
-
results = search.search(q: "taxes")
|
8
|
+
GdsApi.publishing_api.get_content("f3bbdec2-0e62-4520-a7fd-6ffd5d36e03a")
|
11
9
|
```
|
12
10
|
|
13
11
|
Example adapters for frequently used applications:
|
@@ -39,12 +37,11 @@ GdsApi::Base.logger = Logger.new("/path/to/file.log")
|
|
39
37
|
## Setting the timeout
|
40
38
|
|
41
39
|
By default the JsonClient timeout is set to 4 seconds. If this is exceeded a
|
42
|
-
`GdsApi::TimedOutException` will be raised.
|
43
|
-
override this timeout. Alternatively, you can override this in the application
|
40
|
+
`GdsApi::TimedOutException` will be raised. You can override this by doing:
|
44
41
|
that uses the adapter with:
|
45
42
|
|
46
43
|
```ruby
|
47
|
-
|
44
|
+
adapter = GdsApi.publishing_api(timeout: <number_of_seconds>)
|
48
45
|
```
|
49
46
|
|
50
47
|
In most cases, there is an upper-limit of 30 seconds imposed by the app server
|
@@ -85,23 +82,6 @@ There are also test helpers for stubbing various requests in other apps.
|
|
85
82
|
|
86
83
|
See [all the test helpers in lib/gds_api/test_helpers](/lib/gds_api/test_helpers).
|
87
84
|
|
88
|
-
### Dependencies
|
89
|
-
|
90
|
-
Some of the helpers come with additional dependencies that you'll need to
|
91
|
-
have installed and configured in your consuming app/lib.
|
92
|
-
|
93
|
-
At time of writing, these are:
|
94
|
-
|
95
|
-
* [WebMock](https://github.com/bblimke/webmock)
|
96
|
-
|
97
|
-
### Documentation
|
98
|
-
|
99
|
-
See [RubyDoc](http://www.rubydoc.info/gems/gds-api-adapters) for some limited documentation.
|
100
|
-
|
101
|
-
To run a Yard server locally to preview documentation, run:
|
102
|
-
|
103
|
-
$ bundle exec yard server --reload
|
104
|
-
|
105
85
|
## Licence
|
106
86
|
|
107
87
|
Released under the MIT Licence, a copy of which can be found in the file
|
data/Rakefile
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
1
|
require "rdoc/task"
|
4
|
-
require
|
2
|
+
require "rake/testtask"
|
5
3
|
|
6
4
|
RDoc::Task.new do |rd|
|
7
5
|
rd.rdoc_files.include("lib/**/*.rb")
|
@@ -13,14 +11,15 @@ Rake::TestTask.new("test") do |t|
|
|
13
11
|
t.test_files = FileList["test/**/*_test.rb"]
|
14
12
|
t.warning = false
|
15
13
|
end
|
16
|
-
task default: :test
|
17
14
|
|
18
|
-
|
15
|
+
task default: %i[lint test]
|
16
|
+
|
17
|
+
require "pact_broker/client/tasks"
|
19
18
|
|
20
19
|
def configure_pact_broker_location(task)
|
21
20
|
task.pact_broker_base_url = ENV.fetch("PACT_BROKER_BASE_URL")
|
22
|
-
if ENV[
|
23
|
-
task.pact_broker_basic_auth = { username: ENV[
|
21
|
+
if ENV["PACT_BROKER_USERNAME"]
|
22
|
+
task.pact_broker_basic_auth = { username: ENV["PACT_BROKER_USERNAME"], password: ENV["PACT_BROKER_PASSWORD"] }
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
@@ -31,5 +30,5 @@ end
|
|
31
30
|
|
32
31
|
desc "Run the linter against changed files"
|
33
32
|
task :lint do
|
34
|
-
sh "bundle exec rubocop --format clang
|
33
|
+
sh "bundle exec rubocop --format clang"
|
35
34
|
end
|
data/lib/gds_api.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
require "addressable"
|
1
2
|
require "plek"
|
3
|
+
require "time"
|
2
4
|
require "gds_api/asset_manager"
|
3
5
|
require "gds_api/calendars"
|
4
6
|
require "gds_api/content_store"
|
@@ -11,7 +13,6 @@ require "gds_api/mapit"
|
|
11
13
|
require "gds_api/maslow"
|
12
14
|
require "gds_api/organisations"
|
13
15
|
require "gds_api/publishing_api"
|
14
|
-
require "gds_api/publishing_api_v2"
|
15
16
|
require "gds_api/router"
|
16
17
|
require "gds_api/search"
|
17
18
|
require "gds_api/support"
|
@@ -139,19 +140,6 @@ module GdsApi
|
|
139
140
|
)
|
140
141
|
end
|
141
142
|
|
142
|
-
# Creates a GdsApi::PublishingApiV2 adapter
|
143
|
-
#
|
144
|
-
# This will set a bearer token if a PUBLISHING_API_BEARER_TOKEN environment
|
145
|
-
# variable is set
|
146
|
-
#
|
147
|
-
# @return [GdsApi::PublishingApiV2]
|
148
|
-
def self.publishing_api_v2(options = {})
|
149
|
-
GdsApi::PublishingApiV2.new(
|
150
|
-
Plek.find("publishing-api"),
|
151
|
-
{ bearer_token: ENV["PUBLISHING_API_BEARER_TOKEN"] }.merge(options),
|
152
|
-
)
|
153
|
-
end
|
154
|
-
|
155
143
|
# Creates a GdsApi::Router adapter for communicating with Router API
|
156
144
|
#
|
157
145
|
# This will set a bearer token if a ROUTER_API_BEARER_TOKEN environment
|
@@ -197,6 +185,6 @@ module GdsApi
|
|
197
185
|
#
|
198
186
|
# @return [GdsApi::Worldwide]
|
199
187
|
def self.worldwide(options = {})
|
200
|
-
GdsApi::Worldwide.new(Plek.
|
188
|
+
GdsApi::Worldwide.new(Plek.new.website_root, options)
|
201
189
|
end
|
202
190
|
end
|
@@ -136,7 +136,7 @@ class GdsApi::AssetManager < GdsApi::Base
|
|
136
136
|
#
|
137
137
|
# @raise [HTTPErrorResponse] if the request returns an error
|
138
138
|
def whitehall_asset(legacy_url_path)
|
139
|
-
get_json("#{base_url}/whitehall_assets/#{
|
139
|
+
get_json("#{base_url}/whitehall_assets/#{uri_encode(legacy_url_path)}")
|
140
140
|
end
|
141
141
|
|
142
142
|
# Updates an asset given a hash with one +file+ attribute
|
data/lib/gds_api/base.rb
CHANGED
@@ -24,7 +24,8 @@ class GdsApi::Base
|
|
24
24
|
:put_json,
|
25
25
|
:patch_json,
|
26
26
|
:delete_json,
|
27
|
-
:get_raw,
|
27
|
+
:get_raw,
|
28
|
+
:get_raw!,
|
28
29
|
:put_multipart,
|
29
30
|
:post_multipart
|
30
31
|
|
@@ -69,9 +70,9 @@ private
|
|
69
70
|
param_pairs = params.sort.map { |key, value|
|
70
71
|
case value
|
71
72
|
when Array
|
72
|
-
value.map
|
73
|
+
value.map do |v|
|
73
74
|
"#{CGI.escape(key.to_s + '[]')}=#{CGI.escape(v.to_s)}"
|
74
|
-
|
75
|
+
end
|
75
76
|
else
|
76
77
|
"#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}"
|
77
78
|
end
|
@@ -79,4 +80,8 @@ private
|
|
79
80
|
|
80
81
|
"?#{param_pairs.join('&')}"
|
81
82
|
end
|
83
|
+
|
84
|
+
def uri_encode(param)
|
85
|
+
Addressable::URI.encode(param.to_s)
|
86
|
+
end
|
82
87
|
end
|
@@ -101,7 +101,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
101
101
|
#
|
102
102
|
# @return [nil]
|
103
103
|
def unsubscribe(uuid)
|
104
|
-
post_json("#{endpoint}/unsubscribe/#{uuid}")
|
104
|
+
post_json("#{endpoint}/unsubscribe/#{uri_encode(uuid)}")
|
105
105
|
end
|
106
106
|
|
107
107
|
# Unsubscribe subscriber from everything
|
@@ -110,7 +110,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
110
110
|
#
|
111
111
|
# @return [nil]
|
112
112
|
def unsubscribe_subscriber(id)
|
113
|
-
delete_json("#{endpoint}/subscribers/#{id}")
|
113
|
+
delete_json("#{endpoint}/subscribers/#{uri_encode(id)}")
|
114
114
|
end
|
115
115
|
|
116
116
|
# Subscribe
|
@@ -141,7 +141,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
141
141
|
# subscriber_count
|
142
142
|
# }
|
143
143
|
def get_subscriber_list(slug:)
|
144
|
-
get_json("#{endpoint}/subscriber-lists/#{slug}")
|
144
|
+
get_json("#{endpoint}/subscriber-lists/#{uri_encode(slug)}")
|
145
145
|
end
|
146
146
|
|
147
147
|
# Get a Subscription
|
@@ -158,7 +158,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
158
158
|
# source
|
159
159
|
# }
|
160
160
|
def get_subscription(id)
|
161
|
-
get_json("#{endpoint}/subscriptions/#{id}")
|
161
|
+
get_json("#{endpoint}/subscriptions/#{uri_encode(id)}")
|
162
162
|
end
|
163
163
|
|
164
164
|
# Get the latest Subscription that has the same subscriber_list
|
@@ -177,7 +177,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
177
177
|
# source
|
178
178
|
# }
|
179
179
|
def get_latest_matching_subscription(id)
|
180
|
-
get_json("#{endpoint}/subscriptions/#{id}/latest")
|
180
|
+
get_json("#{endpoint}/subscriptions/#{uri_encode(id)}/latest")
|
181
181
|
end
|
182
182
|
|
183
183
|
# Get Subscriptions for a Subscriber
|
@@ -188,9 +188,9 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
188
188
|
# @return [Hash] subscriber, subscriptions
|
189
189
|
def get_subscriptions(id:, order: nil)
|
190
190
|
if order
|
191
|
-
get_json("#{endpoint}/subscribers/#{id}/subscriptions?order=#{order}")
|
191
|
+
get_json("#{endpoint}/subscribers/#{uri_encode(id)}/subscriptions?order=#{uri_encode(order)}")
|
192
192
|
else
|
193
|
-
get_json("#{endpoint}/subscribers/#{id}/subscriptions")
|
193
|
+
get_json("#{endpoint}/subscribers/#{uri_encode(id)}/subscriptions")
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
@@ -202,7 +202,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
202
202
|
# @return [Hash] subscriber
|
203
203
|
def change_subscriber(id:, new_address:)
|
204
204
|
patch_json(
|
205
|
-
"#{endpoint}/subscribers/#{id}",
|
205
|
+
"#{endpoint}/subscribers/#{uri_encode(id)}",
|
206
206
|
new_address: new_address,
|
207
207
|
)
|
208
208
|
end
|
@@ -215,7 +215,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
215
215
|
# @return [Hash] subscription
|
216
216
|
def change_subscription(id:, frequency:)
|
217
217
|
patch_json(
|
218
|
-
"#{endpoint}/subscriptions/#{id}",
|
218
|
+
"#{endpoint}/subscriptions/#{uri_encode(id)}",
|
219
219
|
frequency: frequency,
|
220
220
|
)
|
221
221
|
end
|
data/lib/gds_api/exceptions.rb
CHANGED
@@ -22,11 +22,10 @@ module GdsApi
|
|
22
22
|
class HTTPErrorResponse < BaseError
|
23
23
|
attr_accessor :code, :error_details
|
24
24
|
|
25
|
-
def initialize(code, message = nil, error_details = nil
|
25
|
+
def initialize(code, message = nil, error_details = nil)
|
26
26
|
super(message)
|
27
27
|
@code = code
|
28
28
|
@error_details = error_details
|
29
|
-
@request_body = request_body
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
@@ -53,8 +52,8 @@ module GdsApi
|
|
53
52
|
class HTTPGatewayTimeout < HTTPIntermittentServerError; end
|
54
53
|
|
55
54
|
module ExceptionHandling
|
56
|
-
def build_specific_http_error(error, url, details = nil
|
57
|
-
message = "URL: #{url}\nResponse body:\n#{error.http_body}
|
55
|
+
def build_specific_http_error(error, url, details = nil)
|
56
|
+
message = "URL: #{url}\nResponse body:\n#{error.http_body}"
|
58
57
|
code = error.http_code
|
59
58
|
error_class_for_code(code).new(code, message, details)
|
60
59
|
end
|
data/lib/gds_api/imminence.rb
CHANGED
@@ -20,8 +20,8 @@ class GdsApi::Imminence < GdsApi::Base
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.parse_place_hash(place_hash)
|
23
|
-
location =
|
24
|
-
address =
|
23
|
+
location = extract_location_hash(place_hash["location"])
|
24
|
+
address = extract_address_hash(place_hash)
|
25
25
|
|
26
26
|
place_hash.merge(location).merge(address)
|
27
27
|
end
|
@@ -31,7 +31,7 @@ class GdsApi::Imminence < GdsApi::Base
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def areas_for_postcode(postcode)
|
34
|
-
url = "#{@endpoint}/areas/#{
|
34
|
+
url = "#{@endpoint}/areas/#{uri_encode(postcode)}.json"
|
35
35
|
get_json(url)
|
36
36
|
end
|
37
37
|
|
data/lib/gds_api/json_client.rb
CHANGED
@@ -29,7 +29,7 @@ module GdsApi
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.default_request_with_json_body_headers
|
32
|
-
|
32
|
+
default_request_headers.merge(json_body_headers)
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.json_body_headers
|
@@ -83,7 +83,7 @@ module GdsApi
|
|
83
83
|
def do_raw_request(method, url, params = nil)
|
84
84
|
do_request(method, url, params)
|
85
85
|
rescue RestClient::Exception => e
|
86
|
-
raise build_specific_http_error(e, url, nil
|
86
|
+
raise build_specific_http_error(e, url, nil)
|
87
87
|
end
|
88
88
|
|
89
89
|
# method: the symbolic name of the method to use, e.g. :get, :post
|
@@ -105,11 +105,11 @@ module GdsApi
|
|
105
105
|
rescue JSON::ParserError
|
106
106
|
nil
|
107
107
|
end
|
108
|
-
raise build_specific_http_error(e, url, error_details
|
108
|
+
raise build_specific_http_error(e, url, error_details)
|
109
109
|
end
|
110
110
|
|
111
111
|
# If no custom response is given, just instantiate Response
|
112
|
-
create_response ||=
|
112
|
+
create_response ||= proc { |r| Response.new(r) }
|
113
113
|
create_response.call(response)
|
114
114
|
end
|
115
115
|
|
@@ -177,10 +177,10 @@ module GdsApi
|
|
177
177
|
::RestClient::Request.execute(method_params)
|
178
178
|
rescue Errno::ECONNREFUSED => e
|
179
179
|
logger.error loggable.merge(status: "refused", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
|
180
|
-
raise GdsApi::EndpointNotFound
|
180
|
+
raise GdsApi::EndpointNotFound, "Could not connect to #{url}"
|
181
181
|
rescue RestClient::Exceptions::Timeout => e
|
182
182
|
logger.error loggable.merge(status: "timeout", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
|
183
|
-
raise GdsApi::TimedOutException
|
183
|
+
raise GdsApi::TimedOutException
|
184
184
|
rescue URI::InvalidURIError => e
|
185
185
|
logger.error loggable.merge(status: "invalid_uri", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
|
186
186
|
raise GdsApi::InvalidUrl
|
@@ -192,10 +192,10 @@ module GdsApi
|
|
192
192
|
raise
|
193
193
|
rescue Errno::ECONNRESET => e
|
194
194
|
logger.error loggable.merge(status: "connection_reset", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
|
195
|
-
raise GdsApi::TimedOutException
|
195
|
+
raise GdsApi::TimedOutException
|
196
196
|
rescue SocketError => e
|
197
197
|
logger.error loggable.merge(status: "socket_error", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
|
198
|
-
raise GdsApi::SocketErrorException
|
198
|
+
raise GdsApi::SocketErrorException
|
199
199
|
end
|
200
200
|
end
|
201
201
|
end
|
@@ -25,7 +25,7 @@ module GdsApi
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def has_next_page?
|
28
|
-
!
|
28
|
+
!page_link("next").nil?
|
29
29
|
end
|
30
30
|
|
31
31
|
def next_page
|
@@ -39,7 +39,7 @@ module GdsApi
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def has_previous_page?
|
42
|
-
!
|
42
|
+
!page_link("previous").nil?
|
43
43
|
end
|
44
44
|
|
45
45
|
def previous_page
|
@@ -70,12 +70,12 @@ module GdsApi
|
|
70
70
|
# point. Note that the responses are stored so subsequent pages will not be
|
71
71
|
# loaded multiple times.
|
72
72
|
def with_subsequent_pages
|
73
|
-
Enumerator.new
|
74
|
-
|
73
|
+
Enumerator.new do |yielder|
|
74
|
+
each { |i| yielder << i }
|
75
75
|
if has_next_page?
|
76
|
-
next_page.with_subsequent_pages.each
|
76
|
+
next_page.with_subsequent_pages.each { |i| yielder << i }
|
77
77
|
end
|
78
|
-
|
78
|
+
end
|
79
79
|
end
|
80
80
|
|
81
81
|
private
|
@@ -70,40 +70,40 @@ module GdsApi
|
|
70
70
|
|
71
71
|
def search_terms(slug)
|
72
72
|
options = {
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
73
|
+
slug: slug,
|
74
|
+
transaction: "search-terms",
|
75
|
+
group_by: "searchKeyword",
|
76
|
+
collect: "searchUniques:sum",
|
77
77
|
}
|
78
78
|
statistics(options)
|
79
79
|
end
|
80
80
|
|
81
81
|
def searches(slug, is_multipart)
|
82
82
|
options = {
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
83
|
+
slug: slug,
|
84
|
+
transaction: "search-terms",
|
85
|
+
group_by: "pagePath",
|
86
|
+
collect: "searchUniques:sum",
|
87
87
|
}
|
88
88
|
statistics(options, is_multipart)
|
89
89
|
end
|
90
90
|
|
91
91
|
def page_views(slug, is_multipart)
|
92
92
|
options = {
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
93
|
+
slug: slug,
|
94
|
+
transaction: "page-statistics",
|
95
|
+
group_by: "pagePath",
|
96
|
+
collect: "uniquePageviews:sum",
|
97
97
|
}
|
98
98
|
statistics(options, is_multipart)
|
99
99
|
end
|
100
100
|
|
101
101
|
def problem_reports(slug, is_multipart)
|
102
102
|
options = {
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
103
|
+
slug: slug,
|
104
|
+
transaction: "page-contacts",
|
105
|
+
group_by: "pagePath",
|
106
|
+
collect: "total:sum",
|
107
107
|
}
|
108
108
|
statistics(options, is_multipart)
|
109
109
|
end
|
@@ -114,11 +114,11 @@ module GdsApi
|
|
114
114
|
# Backdrop can be found here: https://github.com/alphagov/backdrop
|
115
115
|
def statistics(options, is_multipart = false)
|
116
116
|
params = {
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
117
|
+
group_by: options[:group_by],
|
118
|
+
collect: options[:collect],
|
119
|
+
duration: 42,
|
120
|
+
period: "day",
|
121
|
+
end_at: Date.today.to_time.getutc.iso8601,
|
122
122
|
}
|
123
123
|
|
124
124
|
filter_param = is_multipart ? :filter_by_prefix : :filter_by
|