gds-api-adapters 67.0.0 → 67.0.1

Sign up to get free protection for your applications and to get access to all the features.
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