gds-api-adapters 67.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35ee9f533f626d99fe8f62ae41b6445e2f75729c333b096c52b90c49555e1d69
4
- data.tar.gz: b1413571e9e8bf09d19497c88790549c947c66258fd25bd11884a6ade859acdf
3
+ metadata.gz: 98cbc4b338641aff5589875074e2fb2d6ef4227a004f04855cfffbf9c0eb5348
4
+ data.tar.gz: 5934de7d813457a5cf01c026ff91bed99445492a43df9c9704abc123db140c7d
5
5
  SHA512:
6
- metadata.gz: b05108e31ccb65d3c2e4735792de423580f2cdbb2ea8d8d0c6de92955b24084559f7e25b6aaed2cbca34b17734d37f2f9df98a5f8d676bcf8e072dc3880aef2b
7
- data.tar.gz: 37ff704afc41d4b516ee043358099d9aadc4097ab0d6f70f47a3c38ed922e29d22c0f3b82a1bcac612c53af8c9649a72066709ddf8134ffe1279125f4e81d62f
6
+ metadata.gz: 00bab1a4b50de5937794758bbdca11c093d3d58c147fed73cb1c3ad89c0c1a9c8d4e2cac2691a31540d9d5c1f92de9a413c25b339a1430dbc367e7f5649afe08
7
+ data.tar.gz: 14a690b77a277f543b800d48da87cac0c78e6edaf2ced0e04a5f9244104707b3f3cf34e77f9cba0cd39e3fca0c53a2672659a17b00611d575d28c43bd25d236b
@@ -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"
@@ -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/#{Addressable::URI.encode(legacy_url_path)}")
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
@@ -80,4 +80,8 @@ private
80
80
 
81
81
  "?#{param_pairs.join('&')}"
82
82
  end
83
+
84
+ def uri_encode(param)
85
+ Addressable::URI.encode(param.to_s)
86
+ end
83
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
@@ -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/#{ERB::Util.url_encode(postcode)}.json"
34
+ url = "#{@endpoint}/areas/#{uri_encode(postcode)}.json"
35
35
  get_json(url)
36
36
  end
37
37
 
@@ -1,6 +1,5 @@
1
1
  require "json"
2
2
  require "forwardable"
3
- require "rack/cache"
4
3
 
5
4
  module GdsApi
6
5
  # This wraps an HTTP response with a JSON body.
@@ -21,6 +20,77 @@ module GdsApi
21
20
  extend Forwardable
22
21
  include Enumerable
23
22
 
23
+ class CacheControl < Hash
24
+ PATTERN = /([-a-z]+)(?:\s*=\s*([^,\s]+))?,?+/i.freeze
25
+
26
+ def initialize(value = nil)
27
+ parse(value)
28
+ end
29
+
30
+ def public?
31
+ self["public"]
32
+ end
33
+
34
+ def private?
35
+ self["private"]
36
+ end
37
+
38
+ def no_cache?
39
+ self["no-cache"]
40
+ end
41
+
42
+ def no_store?
43
+ self["no-store"]
44
+ end
45
+
46
+ def must_revalidate?
47
+ self["must-revalidate"]
48
+ end
49
+
50
+ def proxy_revalidate?
51
+ self["proxy-revalidate"]
52
+ end
53
+
54
+ def max_age
55
+ self["max-age"].to_i if key?("max-age")
56
+ end
57
+
58
+ def reverse_max_age
59
+ self["r-maxage"].to_i if key?("r-maxage")
60
+ end
61
+ alias_method :r_maxage, :reverse_max_age
62
+
63
+ def shared_max_age
64
+ self["s-maxage"].to_i if key?("r-maxage")
65
+ end
66
+ alias_method :s_maxage, :shared_max_age
67
+
68
+ def to_s
69
+ directives = []
70
+ values = []
71
+
72
+ each do |key, value|
73
+ if value == true
74
+ directives << key
75
+ elsif value
76
+ values << "#{key}=#{value}"
77
+ end
78
+ end
79
+
80
+ (directives.sort + values.sort).join(", ")
81
+ end
82
+
83
+ private
84
+
85
+ def parse(header)
86
+ return if header.nil? || header.empty?
87
+
88
+ header.scan(PATTERN).each do |name, value|
89
+ self[name.downcase] = value || true
90
+ end
91
+ end
92
+ end
93
+
24
94
  def_delegators :to_hash, :[], :"<=>", :each, :dig
25
95
 
26
96
  def initialize(http_response, options = {})
@@ -63,7 +133,7 @@ module GdsApi
63
133
  end
64
134
 
65
135
  def cache_control
66
- @cache_control ||= Rack::Cache::CacheControl.new(headers[:cache_control])
136
+ @cache_control ||= CacheControl.new(headers[:cache_control])
67
137
  end
68
138
 
69
139
  def to_hash
@@ -324,7 +324,7 @@ module GdsApi
324
324
  "id" => id,
325
325
  "frequency" => frequency,
326
326
  "source" => "user_signed_up",
327
- "ended_at" => ended ? Time.now.to_datetime.rfc3339 : nil,
327
+ "ended_at" => ended ? Time.now.iso8601 : nil,
328
328
  "ended_reason" => ended ? "unsubscribed" : nil,
329
329
  "subscriber" => {
330
330
  "id" => subscriber_id,
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "67.0.0".freeze
2
+ VERSION = "67.0.1".freeze
3
3
  end
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: 67.0.0
4
+ version: 67.0.1
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: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.9.0
69
- - !ruby/object:Gem::Dependency
70
- name: rack-cache
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rest-client
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +142,14 @@ dependencies:
156
142
  requirements:
157
143
  - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: '1.3'
145
+ version: '1.11'
160
146
  type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - "~>"
165
151
  - !ruby/object:Gem::Version
166
- version: '1.3'
152
+ version: '1.11'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: pact
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -179,47 +165,47 @@ dependencies:
179
165
  - !ruby/object:Gem::Version
180
166
  version: '1.20'
181
167
  - !ruby/object:Gem::Dependency
182
- name: pact-consumer-minitest
168
+ name: pact_broker-client
183
169
  requirement: !ruby/object:Gem::Requirement
184
170
  requirements:
185
171
  - - "~>"
186
172
  - !ruby/object:Gem::Version
187
- version: '1.0'
173
+ version: '1.14'
188
174
  type: :development
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
178
  - - "~>"
193
179
  - !ruby/object:Gem::Version
194
- version: '1.0'
180
+ version: '1.14'
195
181
  - !ruby/object:Gem::Dependency
196
- name: pact-mock_service
182
+ name: pact-consumer-minitest
197
183
  requirement: !ruby/object:Gem::Requirement
198
184
  requirements:
199
185
  - - "~>"
200
186
  - !ruby/object:Gem::Version
201
- version: '2.6'
187
+ version: '1.0'
202
188
  type: :development
203
189
  prerelease: false
204
190
  version_requirements: !ruby/object:Gem::Requirement
205
191
  requirements:
206
192
  - - "~>"
207
193
  - !ruby/object:Gem::Version
208
- version: '2.6'
194
+ version: '1.0'
209
195
  - !ruby/object:Gem::Dependency
210
- name: pact_broker-client
196
+ name: pact-mock_service
211
197
  requirement: !ruby/object:Gem::Requirement
212
198
  requirements:
213
199
  - - "~>"
214
200
  - !ruby/object:Gem::Version
215
- version: '1.14'
201
+ version: '2.6'
216
202
  type: :development
217
203
  prerelease: false
218
204
  version_requirements: !ruby/object:Gem::Requirement
219
205
  requirements:
220
206
  - - "~>"
221
207
  - !ruby/object:Gem::Version
222
- version: '1.14'
208
+ version: '2.6'
223
209
  - !ruby/object:Gem::Dependency
224
210
  name: pry
225
211
  requirement: !ruby/object:Gem::Requirement