lws 7.2.0 → 7.2.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: db2a5afb03078543a2c129a2eb447c9038032daba9b06ee4c7ce16e484fa356b
4
- data.tar.gz: 9bd4e6f9a94ac7e86ed1572617c99fd8330ce718516a847b9ef7aecc5d96380f
3
+ metadata.gz: 6deffc4e78a47854d29873d8fc9a28362613690de1c942ae8eed2c5e83e937ca
4
+ data.tar.gz: a1986c2225a9f172a12cacc6a37d00a19458cbe396212a3281cb74c7901db850
5
5
  SHA512:
6
- metadata.gz: 34d875da7b9139b7115a15cc6b61ef7930956dae43858ff386da3738e8eedef3f9250f99fd0c62fb68a76725e9811fc9ab0ebd7c1c60847cf2d7a9479c1ef187
7
- data.tar.gz: 4f792cfef73be50479bd9dbf91814e66e46a2bc1612203eb40d91fded571fa1b5a57820c585560524a578a658faec0d151b462dfba33e297536d9484218ecc82
6
+ metadata.gz: 3e8856e550c55c227c1671a42573f60044a7bee2e16be6a4f35f5e954cd2b37289a8ee4eee225894d5073e82cb37ee0111bd29c464ccad8c36b3872a0698eacf
7
+ data.tar.gz: c3e1c5f33253614acf54842796ccb4c9b3b532b4f172d22c7f5f0456056425c15f785a8df29db2af5eb80828bcd76ae3bf7131d74cff967702ad350b40f78656
data/lib/lws.rb CHANGED
@@ -10,6 +10,7 @@
10
10
 
11
11
 
12
12
  require "faraday_middleware"
13
+ require "faraday/http_cache"
13
14
  require "hashie"
14
15
  require "multi_json"
15
16
  require "spyke"
@@ -116,6 +117,12 @@ module LWS
116
117
  if config.caching_object
117
118
  c.use FaradayMiddleware::Caching, config.caching_object
118
119
  end
120
+ if config.http_caching
121
+ logger = config.http_debug ? config.logger : nil
122
+ c.use Faraday::HttpCache, store: config.http_caching_object,
123
+ logger: logger,
124
+ shared_cache: false
125
+ end
119
126
  c.use RequestHeaders, config.api_token
120
127
  c.use config.api_token_middleware if config.api_token_middleware.present?
121
128
  c.request :json
@@ -157,7 +157,11 @@ module LWS::Generic
157
157
  # @return [Object, nil] the digged up value or +nil+
158
158
  def dig(*attrs)
159
159
  attr = attrs.shift
160
- value = send(attr)
160
+ value = begin
161
+ send(attr)
162
+ rescue NoMethodError
163
+ nil
164
+ end
161
165
  return nil if value.nil?
162
166
  return value if attrs.empty?
163
167
  raise TypeError, "#{value.class} does not have #dig method" unless value.respond_to? :dig
@@ -45,6 +45,15 @@ module LWS
45
45
  # (default: +:production+)
46
46
  property :environment, default: :production
47
47
 
48
+ #@!attribute http_caching
49
+ # @return [Boolean] whether HTTP caching is enabled
50
+ property :http_caching, default: true
51
+
52
+ #@!attribute http_caching_object
53
+ # @return [#read, #write, #delete] an object that caches results
54
+ # respecting HTTP expiration (instead of an in-memory hash)
55
+ property :http_caching_object, default: nil
56
+
48
57
  #@!attribute http_debug
49
58
  # @return [Boolean] whether to show HTTP debug messages (default: +false+)
50
59
  property :http_debug, default: false
@@ -13,6 +13,6 @@ module LWS
13
13
 
14
14
  # The LWS library version.
15
15
  # @note The major and minor version parts match the LWS API version!
16
- VERSION = "7.2.0".freeze
16
+ VERSION = "7.2.1".freeze
17
17
 
18
18
  end
@@ -0,0 +1,80 @@
1
+ #
2
+ # Copyright © 2016–2020 LeftClick B.V.
3
+ #
4
+ # This software is property of LeftClick B.V. and cannot be redistributed
5
+ # and/or modified without permission. The software or any of its parts
6
+ # cannot be used for any other purposes than the LeftClick services and
7
+ # only during a valid license subscription. For more information, please
8
+ # contact LeftClick B.V. at: Schootense Dreef 20A, 5708 HZ Helmond, The
9
+ # Netherlands, info@leftclick.eu, +3185-4444-004.
10
+
11
+
12
+ require "test_helper"
13
+
14
+ class TestHTTPCaching < MiniTest::Test
15
+
16
+ # Class used to check if data is read/written to or remove from the cache
17
+ class HTTPCacheTest
18
+
19
+ attr_reader :last_read_key
20
+ attr_reader :last_written_key, :last_written_value
21
+ attr_reader :last_deleted_key
22
+
23
+ def read(key)
24
+ @last_read_key = key
25
+ nil
26
+ end
27
+
28
+ def write(key, value)
29
+ @last_written_key = key
30
+ @last_written_value = value
31
+ nil
32
+ end
33
+
34
+ def delete(key)
35
+ @last_deleted_key = key
36
+ nil
37
+ end
38
+
39
+ end
40
+
41
+ def setup
42
+ @cache_mock = HTTPCacheTest.new
43
+
44
+ # Redo the LWS setup with an HTTP caching object
45
+ LWS.setup do |config|
46
+ config.api_token = ENV["LC_LWS_TEST_TOKEN"]
47
+ config.http_caching_object = @cache_mock
48
+ if ENV["LC_LWS_TEST_DEBUG"].present?
49
+ config.http_debug = true
50
+ config.http_debug_headers = true
51
+ end
52
+ config.environment = :development
53
+ end
54
+ end
55
+
56
+ def teardown
57
+ # Restore the configuration
58
+ reconfigure
59
+ end
60
+
61
+ def test_working_cache
62
+ assert_nil(@cache_mock.last_read_key)
63
+ assert_nil(@cache_mock.last_written_key)
64
+ assert_nil(@cache_mock.last_written_value)
65
+ assert_nil(@cache_mock.last_deleted_key)
66
+
67
+ new_configuration = LWS::Auth::Configuration.create(key: "test", value: "some_value")
68
+ refute_nil(@cache_mock.last_deleted_key)
69
+
70
+ _configurations = LWS::Auth::Configuration.where(key: "test").to_a
71
+ refute_nil(@cache_mock.last_read_key)
72
+ assert_equal(@cache_mock.last_read_key, @cache_mock.last_written_key)
73
+ refute_nil(@cache_mock.last_written_value)
74
+
75
+ old_key = @cache_mock.last_deleted_key.dup
76
+ new_configuration.destroy
77
+ refute_equal(old_key, @cache_mock.last_deleted_key)
78
+ end
79
+
80
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lws
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.0
4
+ version: 7.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LeftClick B.V.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-23 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday-http-cache
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: faraday_middleware
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -262,6 +276,7 @@ files:
262
276
  - test/fixtures/auth.yml
263
277
  - test/fixtures/permissions.yml
264
278
  - test/generic_test.rb
279
+ - test/http_caching_test.rb
265
280
  - test/json_parser_test.rb
266
281
  - test/logger_test.rb
267
282
  - test/maps_test.rb
@@ -295,6 +310,7 @@ signing_key:
295
310
  specification_version: 4
296
311
  summary: LeftClick web services library for Ruby
297
312
  test_files:
313
+ - test/http_caching_test.rb
298
314
  - test/generic_test.rb
299
315
  - test/caching_test.rb
300
316
  - test/api_token_middleware_test.rb