gitlab-client-cache 0.0.3 → 0.0.4

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: d350a75806d888f784565799473875ef199104536103de749aaaef8b53f98c78
4
- data.tar.gz: 2b71a182d6c912140bbf9838ed9210e080c4dc2ce077957797f7f1609437e500
3
+ metadata.gz: 91f62e80a4ad2f57008c618ad5db4a37360bc629b712848b1aa48e06e50768f8
4
+ data.tar.gz: 0576a4acb6eab7585a40c0de2e87daedfab90b5c0d28d6f56f8f7c36a00db8c1
5
5
  SHA512:
6
- metadata.gz: 26883d8c2693da2bf08e33366eac75772f39bbb2948229c5110ffe4937757088f6f5f6410a1e76db6414b832e93fa8ac3c148e8e69133d5a4ec29cba17533542
7
- data.tar.gz: 516973e271b58a4bff32383024dbaa7b72310ffc63be65d09c6b1e49bcc35a0c69abea9b6bc0c7227287298ae9ac02856a8a618f120a8847804cba5304fb837b
6
+ metadata.gz: e6713806ee592b533315b555017fb1ef8917b46b94425a71565f67f57b8e65f3507867fbcbcd191092161e838ca9f565f51695bb596b1610b1e8911a8db352c0
7
+ data.tar.gz: 24ecd0c31f6f3f4c13769e45efc4d105ad090e4509ed38b66eef2a4ac3be2eb9a2ff2849f50b97d363bcaef372eae7fbcd592a0f423a7fe6ef05922048cdcd2a
@@ -11,30 +11,39 @@ 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, http_path, http_params)
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, http_path, http_params)
30
+ def determine_expires_in(args)
27
31
  expires_in = @config.expires_in
28
32
 
29
33
  if expires_in.is_a?(Array)
30
34
  expires_in = \
31
35
  expires_in.each do |block|
32
- result = block.is_a?(Proc) ? block.call(http_path, http_params) : block
36
+ result = block.is_a?(Proc) ? block.call(*args) : block
33
37
  break result unless result == :default
34
38
  end
39
+ expires_in = nil if expires_in.is_a?(Array)
35
40
  end
36
41
 
37
- return true unless expires_in
42
+ expires_in
43
+ end
44
+
45
+ def path_fresh?(path, expires_in)
46
+ return true if expires_in.nil?
38
47
 
39
48
  path.mtime + expires_in >= Time.now
40
49
  end
@@ -51,11 +60,9 @@ class Gitlab::Client::Cache::Caching
51
60
  Object.const_get(klass).inflate(content)
52
61
  end
53
62
 
54
- def dump(path, response)
63
+ def dump(path, content)
55
64
  path.dirname.mkpath
56
- path.write(deflate(Marshal.dump(response)))
57
-
58
- response
65
+ path.write(deflate(Marshal.dump(content)))
59
66
  end
60
67
 
61
68
  def deflate(content)
@@ -70,9 +77,8 @@ class Gitlab::Client::Cache::Caching
70
77
  end
71
78
  end
72
79
 
73
- def path_to(http_path, http_params)
74
- params = clean_params(http_params)
75
- plain = JSON.generate([http_path, params])
80
+ def path_to(args)
81
+ plain = JSON.generate(args)
76
82
  key = Digest::SHA256.hexdigest(plain)
77
83
 
78
84
  parts = [
@@ -84,14 +90,6 @@ class Gitlab::Client::Cache::Caching
84
90
  Pathname.new(parts.join("/"))
85
91
  end
86
92
 
87
- def clean_params(params)
88
- params = params.dup
89
- params.delete(:logger)
90
- params.delete(:log_level)
91
-
92
- params
93
- end
94
-
95
93
  def clean_path(path)
96
94
  CGI.escape(path)
97
95
  .gsub(".", "_")
@@ -2,6 +2,10 @@
2
2
 
3
3
  module Gitlab::Client::Cache::Patch
4
4
  def get(path, params = {})
5
+ params = params.dup
6
+ params.delete(:logger)
7
+ params.delete(:log_level)
8
+
5
9
  Gitlab::Client::Cache::Caching.new(Gitlab::Client::Cache.config).cached(path, params) { super }
6
10
  end
7
11
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitlabClientCache
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
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.3
4
+ version: 0.0.4
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-15 00:00:00.000000000 Z
11
+ date: 2023-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab