gitlab-client-cache 0.0.2 → 0.0.5

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: e3d1c3a537e0ae3dedbd5ddcc6fe82e377f299cea066b3a6352352bffdde1cdf
4
- data.tar.gz: 993e7b32375edc9e7d5a9ff1e3c291168c5ea4b7e6b5dcd9ff3b56249356643e
3
+ metadata.gz: 2dda76e9f1f1172d8de24dd9bfa27ec091bb26588ea054c17a40f19ae12a3ab2
4
+ data.tar.gz: fe3fcd64125ecc3f9126b44c77778b94881200350c9fe0cb48cc9a69fb59fbe8
5
5
  SHA512:
6
- metadata.gz: 40193ec872a903d7429cf0a22f052a99fe1350cc641ffa585562f452fa706ca5e4d98d53a399c0327449a449b7303c03f50f78eca5376c1a1ef6ef04aed045c6
7
- data.tar.gz: 80be8c83333e8cf09e8b31d4d891e30e9c4d720be8d9010823cd7d3b7e41fc412fc53eef31d49a69ab0f28b80286d30d1deab206d0ee1b4f8894a9afa6b39662
6
+ metadata.gz: 00ab1a36bd9e1c7f0f41b0564fccfebf6a7b586a885d60ad5b764bacad9610a5dab2e79095ae268178b9235778b907790e68b9f1049b8419fceb4043d8999c10
7
+ data.tar.gz: 41f244bcad85e4bb8f14b84452a5b6128e591a2c21685dce19dbb2e33085ff6ebb6de4134d5dab34d03aadead48106513f1e3980bc93057d3b4a027a824fb1a6
@@ -11,22 +11,41 @@ class Gitlab::Client::Cache::Caching
11
11
  @config = config
12
12
  end
13
13
 
14
- def cached(http_path, http_params)
15
- path = path_to(http_path, http_params)
14
+ def cached(*args)
15
+ path = path_to(args)
16
16
 
17
- if path.exist? && path_fresh?(path)
17
+ expires_in = determine_expires_in(args)
18
+
19
+ if expires_in != :skip_caching && path.exist? && path_fresh?(path, expires_in)
18
20
  load(path)
19
21
  else
20
- dump(path, yield)
22
+ result = yield
23
+ dump(path, result) unless expires_in == :skip_caching
24
+ result
21
25
  end
22
26
  end
23
27
 
24
28
  private
25
29
 
26
- def path_fresh?(path)
27
- return true unless @config.expires_in
30
+ def determine_expires_in(args)
31
+ expires_in = @config.expires_in
32
+
33
+ if expires_in.is_a?(Array)
34
+ expires_in = \
35
+ expires_in.each do |block|
36
+ result = block.is_a?(Proc) ? block.call(*args) : block
37
+ break result unless result == :default
38
+ end
39
+ expires_in = nil if expires_in.is_a?(Array)
40
+ end
41
+
42
+ expires_in
43
+ end
44
+
45
+ def path_fresh?(path, expires_in)
46
+ return true if expires_in.nil?
28
47
 
29
- path.mtime + @config.expires_in >= Time.now
48
+ path.mtime + expires_in >= Time.now
30
49
  end
31
50
 
32
51
  def load(path)
@@ -41,11 +60,9 @@ class Gitlab::Client::Cache::Caching
41
60
  Object.const_get(klass).inflate(content)
42
61
  end
43
62
 
44
- def dump(path, response)
63
+ def dump(path, content)
45
64
  path.dirname.mkpath
46
- path.write(deflate(Marshal.dump(response)))
47
-
48
- response
65
+ path.write(deflate(Marshal.dump(content)))
49
66
  end
50
67
 
51
68
  def deflate(content)
@@ -60,9 +77,8 @@ class Gitlab::Client::Cache::Caching
60
77
  end
61
78
  end
62
79
 
63
- def path_to(http_path, http_params)
64
- params = clean_params(http_params)
65
- plain = JSON.generate([http_path, params])
80
+ def path_to(args)
81
+ plain = JSON.generate(args)
66
82
  key = Digest::SHA256.hexdigest(plain)
67
83
 
68
84
  parts = [
@@ -74,14 +90,6 @@ class Gitlab::Client::Cache::Caching
74
90
  Pathname.new(parts.join("/"))
75
91
  end
76
92
 
77
- def clean_params(params)
78
- params = params.dup
79
- params.delete(:logger)
80
- params.delete(:log_level)
81
-
82
- params
83
- end
84
-
85
93
  def clean_path(path)
86
94
  CGI.escape(path)
87
95
  .gsub(".", "_")
@@ -2,7 +2,11 @@
2
2
 
3
3
  module Gitlab::Client::Cache::Patch
4
4
  def get(path, params = {})
5
- Gitlab::Client::Cache::Caching.new(Gitlab::Client::Cache.config).cached(path, params) { super }
5
+ params_for_path = params.dup
6
+ params_for_path.delete(:logger)
7
+ params_for_path.delete(:log_level)
8
+
9
+ Gitlab::Client::Cache::Caching.new(Gitlab::Client::Cache.config).cached(path, params_for_path) { super }
6
10
  end
7
11
  end
8
12
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitlabClientCache
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.5"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-client-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Leitzen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-07 00:00:00.000000000 Z
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab