gds-api-adapters 52.8.0 → 53.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gds_api/json_client.rb +2 -74
- data/lib/gds_api/test_helpers/json_client_helper.rb +0 -3
- data/lib/gds_api/version.rb +1 -1
- metadata +2 -17
- data/lib/gds_api/null_cache.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe7a50e0626b484068f1cf7cf7f43495cb2a47a264f3b82fb081cf37bb091b19
|
4
|
+
data.tar.gz: 0ae38cb74f6563bd85c50f7991c2a6a83cc11d091842d4c326d98f3b07125c94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d2240ddfa6bbbd7cbd7995a7c8f9a53d8545a5822ae8951dc0ec0190620db31cf0f1d78b2743dab9a3c10d4015e4a81f0b4f05f0fb6ce64f18d069839493854
|
7
|
+
data.tar.gz: e2be4f4b1788a402ac7f916c2997b9c8f920e7e60c8081da9ba4c2ca9b47f92d760e2511f6f072bbc4d0387a92756347726169c9843aade37a736cf230b9189d
|
data/lib/gds_api/json_client.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
require_relative 'response'
|
2
2
|
require_relative 'exceptions'
|
3
3
|
require_relative 'version'
|
4
|
-
require_relative 'null_cache'
|
5
4
|
require_relative 'govuk_headers'
|
6
|
-
require 'lrucache'
|
7
5
|
require 'rest-client'
|
8
6
|
require 'null_logger'
|
9
7
|
|
@@ -11,27 +9,7 @@ module GdsApi
|
|
11
9
|
class JsonClient
|
12
10
|
include GdsApi::ExceptionHandling
|
13
11
|
|
14
|
-
|
15
|
-
# header if it is included in the response.
|
16
|
-
#
|
17
|
-
# LRUCache doesn't respect a cache size of 0, and instead effectively
|
18
|
-
# creates a cache with a size of 1.
|
19
|
-
def self.cache(size = DEFAULT_CACHE_SIZE, ttl = DEFAULT_CACHE_TTL)
|
20
|
-
@cache ||= LRUCache.new(max_size: size, ttl: ttl)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Set the caching implementation. Default is LRUCache. Can be Anything
|
24
|
-
# which responds to:
|
25
|
-
#
|
26
|
-
# [](key)
|
27
|
-
# []=(key, value)
|
28
|
-
# store(key, value, expiry_time=nil) - or a Ruby Time object
|
29
|
-
#
|
30
|
-
class << self
|
31
|
-
attr_writer :cache
|
32
|
-
end
|
33
|
-
|
34
|
-
attr_accessor :logger, :options, :cache
|
12
|
+
attr_accessor :logger, :options
|
35
13
|
|
36
14
|
def initialize(options = {})
|
37
15
|
if options[:disable_timeout] || options[:timeout].to_i < 0
|
@@ -39,15 +17,6 @@ module GdsApi
|
|
39
17
|
end
|
40
18
|
|
41
19
|
@logger = options[:logger] || NullLogger.instance
|
42
|
-
disable_cache = options[:disable_cache] || ENV.fetch("GDS_API_DISABLE_CACHE", false)
|
43
|
-
|
44
|
-
if disable_cache || options[:cache_size]&.zero?
|
45
|
-
@cache = NullCache.new
|
46
|
-
else
|
47
|
-
cache_size = options[:cache_size] || DEFAULT_CACHE_SIZE
|
48
|
-
cache_ttl = options[:cache_ttl] || DEFAULT_CACHE_TTL
|
49
|
-
@cache = JsonClient.cache(cache_size, cache_ttl)
|
50
|
-
end
|
51
20
|
@options = options
|
52
21
|
end
|
53
22
|
|
@@ -70,8 +39,6 @@ module GdsApi
|
|
70
39
|
end
|
71
40
|
|
72
41
|
DEFAULT_TIMEOUT_IN_SECONDS = 4
|
73
|
-
DEFAULT_CACHE_SIZE = 100
|
74
|
-
DEFAULT_CACHE_TTL = 15 * 60 # 15 minutes
|
75
42
|
|
76
43
|
def get_raw!(url)
|
77
44
|
do_raw_request(:get, url)
|
@@ -142,7 +109,7 @@ module GdsApi
|
|
142
109
|
if params
|
143
110
|
additional_headers.merge!(self.class.json_body_headers)
|
144
111
|
end
|
145
|
-
response =
|
112
|
+
response = do_request(method, url, (params.to_json if params), additional_headers)
|
146
113
|
rescue RestClient::Exception => e
|
147
114
|
# Attempt to parse the body as JSON if possible
|
148
115
|
error_details = begin
|
@@ -201,45 +168,6 @@ module GdsApi
|
|
201
168
|
)
|
202
169
|
end
|
203
170
|
|
204
|
-
def do_request_with_cache(method, url, params = nil, additional_headers = {})
|
205
|
-
# Only read GET requests from the cache: any other request methods should
|
206
|
-
# always be passed through. Note that this means HEAD requests won't get
|
207
|
-
# cached, but that would involve separating the cache by method and URL.
|
208
|
-
# Also, we don't generally make HEAD requests.
|
209
|
-
use_cache = (method == :get)
|
210
|
-
|
211
|
-
if use_cache
|
212
|
-
cached_response = @cache[url]
|
213
|
-
return cached_response if cached_response
|
214
|
-
end
|
215
|
-
|
216
|
-
response = do_request(method, url, params, additional_headers)
|
217
|
-
|
218
|
-
if use_cache
|
219
|
-
cache_time = response_cache_time(response)
|
220
|
-
# If cache_time is nil, this will fall back on @cache's default
|
221
|
-
@cache.store(url, response, cache_time)
|
222
|
-
end
|
223
|
-
|
224
|
-
response
|
225
|
-
end
|
226
|
-
|
227
|
-
# Return either a Time object representing the expiry time of the response
|
228
|
-
# or nil if no cache information is provided
|
229
|
-
def response_cache_time(response)
|
230
|
-
if response.headers[:cache_control]
|
231
|
-
cache_control = Rack::Cache::CacheControl.new(response.headers[:cache_control])
|
232
|
-
|
233
|
-
if cache_control.private? || cache_control.no_cache? || cache_control.no_store?
|
234
|
-
Time.now.utc
|
235
|
-
elsif cache_control.max_age
|
236
|
-
Time.now.utc + cache_control.max_age
|
237
|
-
end
|
238
|
-
elsif response.headers[:expires]
|
239
|
-
Time.httpdate response.headers[:expires]
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
171
|
def do_request(method, url, params = nil, additional_headers = {})
|
244
172
|
loggable = { request_uri: url, start_time: Time.now.to_f }
|
245
173
|
start_logging = loggable.merge(action: 'start')
|
data/lib/gds_api/version.rb
CHANGED
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:
|
4
|
+
version: 53.0.0
|
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: 2018-08-
|
11
|
+
date: 2018-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: lrucache
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.1.1
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.1
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: null_logger
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -387,7 +373,6 @@ files:
|
|
387
373
|
- lib/gds_api/mapit.rb
|
388
374
|
- lib/gds_api/maslow.rb
|
389
375
|
- lib/gds_api/middleware/govuk_header_sniffer.rb
|
390
|
-
- lib/gds_api/null_cache.rb
|
391
376
|
- lib/gds_api/organisations.rb
|
392
377
|
- lib/gds_api/performance_platform/data_in.rb
|
393
378
|
- lib/gds_api/performance_platform/data_out.rb
|