nexus_mods 0.5.0 → 0.6.0

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: 758229de2b795e860d8b150e4bbc8a2d516f6e49c2773ac242c0b67472f6c157
4
- data.tar.gz: 96e38216e7f54b9198c9362bb01b7ea0fdde2205e357a419123b3337c2791ee4
3
+ metadata.gz: 81b66890f6e45e4f48b44fc3dbc2ce5f8ae7c3ee037960b95f4f269adb41ee77
4
+ data.tar.gz: 611d91825c05ba62fc6a6fcf16b62ba07cf284479e21e7bfb306b397ea910613
5
5
  SHA512:
6
- metadata.gz: 8c2fa3106f59e59472bcb39d107d28bba9ce394e9c7d2783d5b60e0074ea7070bfd175aaa1dd543397b057aaabd7bd0778f299609acbf30a706870f4460c95ab
7
- data.tar.gz: f2f6994f254288a5c8b7ba806a3f0b9b18a044aacdf9b7edd381b629a6e97c9d49f881ba566437beb4739cf32a2a0b11575fd71f574210e62763fb5fcc86b8cb
6
+ metadata.gz: 6e53e797874ad30d2f6877202d0c926d21124b5208447e15d9af38d5ce6424b96d153d1c9c7ffafa8073d96ac9addcb5e0273438efb5899ef296d35355e2d889
7
+ data.tar.gz: cfa6d681a78c652108d70e605a951178b90e20a21a6477e7ef98c3822e00fdca50912973c675019dc69e5d69c7735025666252b82bbdc2761a038147c76c6fc0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [v0.6.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.5.1...v0.6.0) (2023-04-10 17:30:40)
2
+
3
+ ### Features
4
+
5
+ * [[Feature] Provide accessors for the default game domain name and mod id](https://github.com/Muriel-Salvan/nexus_mods/commit/ee2ba5c4d3eccf1adae2cc781c5988625537c341)
6
+
7
+ # [v0.5.1](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.5.0...v0.5.1) (2023-04-10 17:19:39)
8
+
9
+ ### Patches
10
+
11
+ * [Use more efficient API cache keys](https://github.com/Muriel-Salvan/nexus_mods/commit/3f09a08b815c71a0b0ec6694359c02fd8503bc90)
12
+
1
13
  # [v0.5.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.4.0...v0.5.0) (2023-04-10 17:05:11)
2
14
 
3
15
  ### 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.6.0'
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
@@ -6,6 +6,14 @@ describe NexusMods::Api::Mod do
6
6
  expect_validate_user
7
7
  end
8
8
 
9
+ it 'returns the default game domain name' do
10
+ expect(nexus_mods(game_domain_name: 'skyrimspecialedition').game_domain_name).to eq 'skyrimspecialedition'
11
+ end
12
+
13
+ it 'returns the default game mod id' do
14
+ expect(nexus_mods(mod_id: 2014).mod_id).to eq 2014
15
+ end
16
+
9
17
  it 'returns a mod complete information' do
10
18
  expect_http_call_to(
11
19
  path: '/v1/games/skyrimspecialedition/mods/2014.json',
@@ -38,6 +46,15 @@ describe NexusMods::Api::Mod do
38
46
  expect_mod_to_be_complete(nexus_mods(game_domain_name: 'skyrimspecialedition').mod(mod_id: 2014))
39
47
  end
40
48
 
49
+ it 'returns mod information for the default game set using accessor' do
50
+ expect_http_call_to(
51
+ path: '/v1/games/skyrimspecialedition/mods/2014.json',
52
+ json: json_complete_mod
53
+ )
54
+ nexus_mods.game_domain_name = 'skyrimspecialedition'
55
+ expect_mod_to_be_complete(nexus_mods.mod(mod_id: 2014))
56
+ end
57
+
41
58
  it 'returns mod information for the default game and mod' do
42
59
  expect_http_call_to(
43
60
  path: '/v1/games/skyrimspecialedition/mods/2014.json',
@@ -46,6 +63,15 @@ describe NexusMods::Api::Mod do
46
63
  expect_mod_to_be_complete(nexus_mods(game_domain_name: 'skyrimspecialedition', mod_id: 2014).mod)
47
64
  end
48
65
 
66
+ it 'returns mod information for the default game and mod set using accessor' do
67
+ expect_http_call_to(
68
+ path: '/v1/games/skyrimspecialedition/mods/2014.json',
69
+ json: json_complete_mod
70
+ )
71
+ nexus_mods.mod_id = 2014
72
+ expect_mod_to_be_complete(nexus_mods.mod(game_domain_name: 'skyrimspecialedition'))
73
+ end
74
+
49
75
  it 'compares objects for equality' do
50
76
  expect_http_call_to(
51
77
  path: '/v1/games/skyrimspecialedition/mods/2014.json',
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.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan