nexus_mods 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 758229de2b795e860d8b150e4bbc8a2d516f6e49c2773ac242c0b67472f6c157
4
- data.tar.gz: 96e38216e7f54b9198c9362bb01b7ea0fdde2205e357a419123b3337c2791ee4
3
+ metadata.gz: 30a5d88705ee7a8d0198ee6bd944bcc8735468e162e8bf17877ecffa3a356d27
4
+ data.tar.gz: c622e319de62f51ee8dd8a8615187105dc8d246efe926933037315798e003ac0
5
5
  SHA512:
6
- metadata.gz: 8c2fa3106f59e59472bcb39d107d28bba9ce394e9c7d2783d5b60e0074ea7070bfd175aaa1dd543397b057aaabd7bd0778f299609acbf30a706870f4460c95ab
7
- data.tar.gz: f2f6994f254288a5c8b7ba806a3f0b9b18a044aacdf9b7edd381b629a6e97c9d49f881ba566437beb4739cf32a2a0b11575fd71f574210e62763fb5fcc86b8cb
6
+ metadata.gz: c43800296d117d5e07862753eb2325d86549550237ab66c7a8b50d22b16676821cedbb69deea59dbca947266f74c9ba513683cb5846a807fdb338c4468154c81
7
+ data.tar.gz: d172bd4112bfec791136a5f6b4e608871c92da6f6b3d025337dc767f64b712743173666458e767c57b308d328dbb91409eb7fc4261e92d42c048d9ed1b645eb3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # [v0.5.1](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.5.0...v0.5.1) (2023-04-10 17:19:39)
2
+
3
+ ### Patches
4
+
5
+ * [Use more efficient API cache keys](https://github.com/Muriel-Salvan/nexus_mods/commit/3f09a08b815c71a0b0ec6694359c02fd8503bc90)
6
+
1
7
  # [v0.5.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.4.0...v0.5.0) (2023-04-10 17:05:11)
2
8
 
3
9
  ### Features
@@ -150,13 +150,16 @@ class NexusMods
150
150
  end
151
151
  cacheable_api(
152
152
  :cached_api,
153
+ key_format: proc do |_target, _method_name, method_args, method_kwargs|
154
+ "#{method_kwargs[:verb]}/#{method_args.first}"
155
+ end,
153
156
  expiry_from_key: proc do |key|
154
157
  # Example of keys:
155
- # NexusMods::ApiClient/cached_api/games/verb:get
156
- # NexusMods::ApiClient/cached_api/games/skyrimspecialedition/mods/2014/verb:get
157
- # NexusMods::ApiClient/cached_api/games/skyrimspecialedition/mods/2014/files/verb:get
158
- # NexusMods::ApiClient/cached_api/users/validate/verb:get
159
- key_components = key.split('/')[2..-2]
158
+ # get/games
159
+ # get/games/skyrimspecialedition/mods/2014
160
+ # get/games/skyrimspecialedition/mods/2014/files
161
+ # get/users/validate
162
+ key_components = key.split('/')[1..]
160
163
  case key_components[0]
161
164
  when 'games'
162
165
  if key_components[1].nil?
@@ -29,10 +29,19 @@ class NexusMods
29
29
  # * Result::
30
30
  # * Integer: Corresponding expiry time
31
31
  # * *on_cache_update* (Proc): Proc called when the cache has been updated
32
- def cacheable_api(*original_method_names, expiry_from_key:, on_cache_update:)
32
+ # * *key_format* (Proc or nil): Optional proc giving the key format from the target of cacheable [default: nil].
33
+ # If nil then a default proc concatenating the target's class, method name and all arguments will be used.
34
+ # * Parameters::
35
+ # * *target* (Object): Object on which the method is cached
36
+ # * *method_name* (Symbol): Method being cached
37
+ # * *method_args* (Array<Object>): Method's arguments
38
+ # * *method_kwargs* (Hash<Symbol,Object>): Method's kwargs
39
+ # * Result::
40
+ # * String: The corresponding key to be used for caching
41
+ def cacheable_api(*original_method_names, expiry_from_key:, on_cache_update:, key_format: nil)
33
42
  cacheable_with_expiry(
34
43
  *original_method_names,
35
- key_format: lambda do |target, method_name, method_args, method_kwargs|
44
+ key_format: key_format || proc do |target, method_name, method_args, method_kwargs|
36
45
  (
37
46
  [
38
47
  target.class,
@@ -1,5 +1,5 @@
1
1
  class NexusMods
2
2
 
3
- VERSION = '0.5.0'
3
+ VERSION = '0.5.1'
4
4
 
5
5
  end
data/lib/nexus_mods.rb CHANGED
@@ -225,9 +225,4 @@ class NexusMods
225
225
  end
226
226
  end
227
227
 
228
- # TODO: Check http cache usefulness and either test it or remove it
229
- # TODO: Check if attr_reader of mod_id and game_id is needed and remove it if not
230
- # TODO: Find better cache keys
231
- # TODO: Documentation and examples
232
-
233
228
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexus_mods
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan