gds-api-adapters 63.5.1 → 67.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -23
- data/Rakefile +7 -8
- data/lib/gds_api.rb +2 -14
- 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 +10 -12
- 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 +11 -35
- 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 +42 -61
- 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 +51 -31
- data/lib/gds_api/version.rb +1 -1
- metadata +15 -32
- 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: 19eaf100f2daa9f68ac9bbd4489af46288c472434d22f81735258284e4d55da6
|
4
|
+
data.tar.gz: 1d8305795bd9f57730e66a1215031e3f9ab41d88c2f84028aea64c2ca02523a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bec2d56f7974d78cf2b28bb418115d155fe53adf7bc159b778ea9468357a7acc0565604251813434d4bf89fc53d8cc1062f68b18200c17d639888ea619ce46f1
|
7
|
+
data.tar.gz: f3a25306f8c628715898387c31ab940aa3011462c6243abba9398d5d93cf8829c4c2d8ea795ab78d6bbe51f375c3aef39d6f69d5a6dcf6a40b6b0fa9da6647d2
|
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
|
@@ -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
|
@@ -224,16 +224,14 @@ class GdsApi::EmailAlertApi < GdsApi::Base
|
|
224
224
|
#
|
225
225
|
# @param [string] address Address to send verification email to
|
226
226
|
# @param [string] destination Path on GOV.UK that subscriber will be emailed
|
227
|
-
# @param [string, nil] redirect Path on GOV.UK to be encoded into the token for redirecting
|
228
227
|
#
|
229
228
|
# @return [Hash] subscriber
|
230
229
|
#
|
231
|
-
def send_subscriber_verification_email(address:, destination
|
230
|
+
def send_subscriber_verification_email(address:, destination:)
|
232
231
|
post_json(
|
233
232
|
"#{endpoint}/subscribers/auth-token",
|
234
233
|
address: address,
|
235
234
|
destination: destination,
|
236
|
-
redirect: redirect,
|
237
235
|
)
|
238
236
|
end
|
239
237
|
|
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
|