nexus_mods 2.4.0 → 2.5.0
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/nexus_mods/api/api_limits.rb +6 -1
- data/lib/nexus_mods/api/category.rb +6 -1
- data/lib/nexus_mods/api/game.rb +6 -1
- data/lib/nexus_mods/api/mod.rb +14 -1
- data/lib/nexus_mods/api/mod_file.rb +24 -1
- data/lib/nexus_mods/api/mod_updates.rb +27 -1
- data/lib/nexus_mods/api/resource.rb +20 -0
- data/lib/nexus_mods/api/user.rb +6 -1
- data/lib/nexus_mods/version.rb +1 -1
- data/lib/nexus_mods.rb +10 -0
- data/spec/nexus_mods_test/scenarios/nexus_mods/api/mod_file_spec.rb +10 -0
- data/spec/nexus_mods_test/scenarios/nexus_mods/api/mod_spec.rb +8 -0
- data/spec/nexus_mods_test/scenarios/nexus_mods/api/mod_updates_spec.rb +28 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f6c2d6e72c966955e6153a3381458fba4f56c36deac811d125edc962046b5a0
|
|
4
|
+
data.tar.gz: d0a2ec92da860dbb53b608e1de22762b3562bac1d4fe1333066f868612983747
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d159a8824c0c6b723ec7f3361f1df52162cebf3d4f91833e072ceeb94089fb84d102d46d597d0ee24e92c6983e56ddcd87a95a6a4ffbb282331a7f3aae94cc84
|
|
7
|
+
data.tar.gz: 9dda81c7f0f593190547ed55aeff36a3040610d13ee59f7c5ff6ffed7df1d95d806685d9cf77e090e3a2410a24a516a32617b9fc047d59cb30f149607022aaba
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# [v2.5.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v2.4.0...v2.5.0) (2023-04-12 19:15:44)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* [[Feature] Add links between resources](https://github.com/Muriel-Salvan/nexus_mods/commit/84c474b75f3ee1e4ac0c8bbda0d2ad25022f1f07)
|
|
6
|
+
|
|
1
7
|
# [v2.4.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v2.3.0...v2.4.0) (2023-04-12 17:23:29)
|
|
2
8
|
|
|
3
9
|
### Features
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
4
6
|
|
|
5
7
|
# Object giving the NexusMods API limits
|
|
6
|
-
class ApiLimits
|
|
8
|
+
class ApiLimits < Resource
|
|
7
9
|
|
|
8
10
|
attr_reader(
|
|
9
11
|
*%i[
|
|
@@ -19,6 +21,7 @@ class NexusMods
|
|
|
19
21
|
# Constructor
|
|
20
22
|
#
|
|
21
23
|
# Parameters::
|
|
24
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
22
25
|
# * *daily_limit* (Integer): The daily limit
|
|
23
26
|
# * *daily_remaining* (Integer): The daily remaining
|
|
24
27
|
# * *daily_reset* (Integer): The daily reset time
|
|
@@ -26,6 +29,7 @@ class NexusMods
|
|
|
26
29
|
# * *hourly_remaining* (Integer): The hourly remaining
|
|
27
30
|
# * *hourly_reset* (Integer): The hourly reset time
|
|
28
31
|
def initialize(
|
|
32
|
+
nexus_mods:,
|
|
29
33
|
daily_limit:,
|
|
30
34
|
daily_remaining:,
|
|
31
35
|
daily_reset:,
|
|
@@ -33,6 +37,7 @@ class NexusMods
|
|
|
33
37
|
hourly_remaining:,
|
|
34
38
|
hourly_reset:
|
|
35
39
|
)
|
|
40
|
+
super(nexus_mods:)
|
|
36
41
|
@daily_limit = daily_limit
|
|
37
42
|
@daily_remaining = daily_remaining
|
|
38
43
|
@daily_reset = daily_reset
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
4
6
|
|
|
5
7
|
# Categories defined for a game in NexusMods
|
|
6
|
-
class Category
|
|
8
|
+
class Category < Resource
|
|
7
9
|
|
|
8
10
|
attr_reader(
|
|
9
11
|
*%i[
|
|
@@ -21,14 +23,17 @@ class NexusMods
|
|
|
21
23
|
# Constructor
|
|
22
24
|
#
|
|
23
25
|
# Parameters::
|
|
26
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
24
27
|
# *id* (Integer): The category id
|
|
25
28
|
# *name* (String): The category id
|
|
26
29
|
# *parent_category* (Category or nil): The parent category, or nil if none [default: nil]
|
|
27
30
|
def initialize(
|
|
31
|
+
nexus_mods:,
|
|
28
32
|
id:,
|
|
29
33
|
name:,
|
|
30
34
|
parent_category: nil
|
|
31
35
|
)
|
|
36
|
+
super(nexus_mods:)
|
|
32
37
|
@id = id
|
|
33
38
|
@name = name
|
|
34
39
|
@parent_category = parent_category
|
data/lib/nexus_mods/api/game.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
@@ -5,7 +7,7 @@ class NexusMods
|
|
|
5
7
|
# A NexusMods game.
|
|
6
8
|
# Attributes info can be taken from there:
|
|
7
9
|
# * https://github.com/Nexus-Mods/node-nexus-api/blob/master/docs/interfaces/_types_.igameinfo.md
|
|
8
|
-
class Game
|
|
10
|
+
class Game < Resource
|
|
9
11
|
|
|
10
12
|
attr_reader(
|
|
11
13
|
*%i[
|
|
@@ -29,6 +31,7 @@ class NexusMods
|
|
|
29
31
|
# Constructor
|
|
30
32
|
#
|
|
31
33
|
# Parameters::
|
|
34
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
32
35
|
# * *id* (Integer): The game's id
|
|
33
36
|
# * *name* (String): The game's name
|
|
34
37
|
# * *forum_url* (String): The game's forum's URL
|
|
@@ -44,6 +47,7 @@ class NexusMods
|
|
|
44
47
|
# * *mods_count* (Integer): The game's mods' count [default: 0]
|
|
45
48
|
# * *categories* (Array<Category>): The list of game's categories [default: []]
|
|
46
49
|
def initialize(
|
|
50
|
+
nexus_mods:,
|
|
47
51
|
id:,
|
|
48
52
|
name:,
|
|
49
53
|
forum_url:,
|
|
@@ -59,6 +63,7 @@ class NexusMods
|
|
|
59
63
|
mods_count: 0,
|
|
60
64
|
categories: []
|
|
61
65
|
)
|
|
66
|
+
super(nexus_mods:)
|
|
62
67
|
@id = id
|
|
63
68
|
@name = name
|
|
64
69
|
@forum_url = forum_url
|
data/lib/nexus_mods/api/mod.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
@@ -5,7 +7,7 @@ class NexusMods
|
|
|
5
7
|
# A NexusMods mod.
|
|
6
8
|
# Attributes info can be taken from there:
|
|
7
9
|
# * https://github.com/Nexus-Mods/node-nexus-api/blob/master/docs/interfaces/_types_.imodinfo.md
|
|
8
|
-
class Mod
|
|
10
|
+
class Mod < Resource
|
|
9
11
|
|
|
10
12
|
attr_reader(
|
|
11
13
|
*%i[
|
|
@@ -36,6 +38,7 @@ class NexusMods
|
|
|
36
38
|
# Constructor
|
|
37
39
|
#
|
|
38
40
|
# Parameters::
|
|
41
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
39
42
|
# * *uid* (Integer): The mod's uid
|
|
40
43
|
# * *mod_id* (Integer): The mod's id
|
|
41
44
|
# * *game_id* (Integer): The mod's game id
|
|
@@ -58,6 +61,7 @@ class NexusMods
|
|
|
58
61
|
# * *unique_downloads_count* (Integer): The mod's unique downloads' count [default: 0]
|
|
59
62
|
# * *endorsements_count* (Integer): The mod's endorsements' count [default: 0]
|
|
60
63
|
def initialize(
|
|
64
|
+
nexus_mods:,
|
|
61
65
|
uid:,
|
|
62
66
|
mod_id:,
|
|
63
67
|
game_id:,
|
|
@@ -80,6 +84,7 @@ class NexusMods
|
|
|
80
84
|
unique_downloads_count: 0,
|
|
81
85
|
endorsements_count: 0
|
|
82
86
|
)
|
|
87
|
+
super(nexus_mods:)
|
|
83
88
|
@uid = uid
|
|
84
89
|
@mod_id = mod_id
|
|
85
90
|
@game_id = game_id
|
|
@@ -134,6 +139,14 @@ class NexusMods
|
|
|
134
139
|
@endorsements_count == other.endorsements_count
|
|
135
140
|
end
|
|
136
141
|
|
|
142
|
+
# Get associated files information
|
|
143
|
+
#
|
|
144
|
+
# Result::
|
|
145
|
+
# * Array<ModFile>: The list of mod files information
|
|
146
|
+
def files
|
|
147
|
+
@nexus_mods.mod_files(game_domain_name: domain_name, mod_id:)
|
|
148
|
+
end
|
|
149
|
+
|
|
137
150
|
end
|
|
138
151
|
|
|
139
152
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
@@ -5,10 +7,12 @@ class NexusMods
|
|
|
5
7
|
# A NexusMods file.
|
|
6
8
|
# Attributes info can be taken from there:
|
|
7
9
|
# * https://github.com/Nexus-Mods/node-nexus-api/blob/master/docs/interfaces/_types_.ifileinfo.md
|
|
8
|
-
class ModFile
|
|
10
|
+
class ModFile < Resource
|
|
9
11
|
|
|
10
12
|
attr_reader(
|
|
11
13
|
*%i[
|
|
14
|
+
game_domain_name
|
|
15
|
+
mod_id
|
|
12
16
|
ids
|
|
13
17
|
uid
|
|
14
18
|
id
|
|
@@ -43,6 +47,9 @@ class NexusMods
|
|
|
43
47
|
# Constructor
|
|
44
48
|
#
|
|
45
49
|
# Parameters::
|
|
50
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
51
|
+
# * *game_domain_name* (String): The game this file belongs to
|
|
52
|
+
# * *mod_id* (Integer): The mod id this file belongs to
|
|
46
53
|
# * *ids* (Array<Integer>): The file's list of IDs
|
|
47
54
|
# * *uid* (Integer): The file's UID
|
|
48
55
|
# * *id* (Integer): The file's main ID
|
|
@@ -60,6 +67,9 @@ class NexusMods
|
|
|
60
67
|
# * *changelog_html* (String): The file's change log in HTML
|
|
61
68
|
# * *content_preview_url* (String): URL to a JSON that gives info on the file's content
|
|
62
69
|
def initialize(
|
|
70
|
+
nexus_mods:,
|
|
71
|
+
game_domain_name:,
|
|
72
|
+
mod_id:,
|
|
63
73
|
ids:,
|
|
64
74
|
uid:,
|
|
65
75
|
id:,
|
|
@@ -77,6 +87,9 @@ class NexusMods
|
|
|
77
87
|
changelog_html:,
|
|
78
88
|
content_preview_url:
|
|
79
89
|
)
|
|
90
|
+
super(nexus_mods:)
|
|
91
|
+
@game_domain_name = game_domain_name
|
|
92
|
+
@mod_id = mod_id
|
|
80
93
|
@ids = ids
|
|
81
94
|
@uid = uid
|
|
82
95
|
@id = id
|
|
@@ -105,6 +118,8 @@ class NexusMods
|
|
|
105
118
|
# * Boolean: Are objects equal?
|
|
106
119
|
def ==(other)
|
|
107
120
|
other.is_a?(ModFile) &&
|
|
121
|
+
@game_domain_name == other.game_domain_name &&
|
|
122
|
+
@mod_id == other.mod_id &&
|
|
108
123
|
@ids == other.ids &&
|
|
109
124
|
@uid == other.uid &&
|
|
110
125
|
@id == other.id &&
|
|
@@ -123,6 +138,14 @@ class NexusMods
|
|
|
123
138
|
@content_preview_url == other.content_preview_url
|
|
124
139
|
end
|
|
125
140
|
|
|
141
|
+
# Get associated mod information
|
|
142
|
+
#
|
|
143
|
+
# Result::
|
|
144
|
+
# * Mod: The corresponding mod
|
|
145
|
+
def mod
|
|
146
|
+
@nexus_mods.mod(game_domain_name:, mod_id:)
|
|
147
|
+
end
|
|
148
|
+
|
|
126
149
|
end
|
|
127
150
|
|
|
128
151
|
end
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
4
6
|
|
|
5
7
|
# A NexusMods mod updates.
|
|
6
|
-
class ModUpdates
|
|
8
|
+
class ModUpdates < Resource
|
|
7
9
|
|
|
8
10
|
attr_reader(
|
|
9
11
|
*%i[
|
|
12
|
+
game_domain_name
|
|
10
13
|
mod_id
|
|
11
14
|
latest_file_update
|
|
12
15
|
latest_mod_activity
|
|
@@ -16,14 +19,20 @@ class NexusMods
|
|
|
16
19
|
# Constructor
|
|
17
20
|
#
|
|
18
21
|
# Parameters::
|
|
22
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
23
|
+
# * *game_domain_name* (String): The game this file belongs to
|
|
19
24
|
# * *mod_id* (Integer): The mod's id
|
|
20
25
|
# * *latest_file_update* (Time): The mod's latest file update
|
|
21
26
|
# * *latest_mod_activity* (Time): The mod's latest activity
|
|
22
27
|
def initialize(
|
|
28
|
+
nexus_mods:,
|
|
29
|
+
game_domain_name:,
|
|
23
30
|
mod_id:,
|
|
24
31
|
latest_file_update:,
|
|
25
32
|
latest_mod_activity:
|
|
26
33
|
)
|
|
34
|
+
super(nexus_mods:)
|
|
35
|
+
@game_domain_name = game_domain_name
|
|
27
36
|
@mod_id = mod_id
|
|
28
37
|
@latest_file_update = latest_file_update
|
|
29
38
|
@latest_mod_activity = latest_mod_activity
|
|
@@ -37,11 +46,28 @@ class NexusMods
|
|
|
37
46
|
# * Boolean: Are objects equal?
|
|
38
47
|
def ==(other)
|
|
39
48
|
other.is_a?(ModUpdates) &&
|
|
49
|
+
@game_domain_name == game_domain_name &&
|
|
40
50
|
@mod_id == other.mod_id &&
|
|
41
51
|
@latest_file_update == other.latest_file_update &&
|
|
42
52
|
@latest_mod_activity == other.latest_mod_activity
|
|
43
53
|
end
|
|
44
54
|
|
|
55
|
+
# Get associated mod information
|
|
56
|
+
#
|
|
57
|
+
# Result::
|
|
58
|
+
# * Mod: The corresponding mod
|
|
59
|
+
def mod
|
|
60
|
+
@nexus_mods.mod(game_domain_name:, mod_id:)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Get associated mod files information
|
|
64
|
+
#
|
|
65
|
+
# Result::
|
|
66
|
+
# * Array<ModFile>: The corresponding mod files
|
|
67
|
+
def mod_files
|
|
68
|
+
@nexus_mods.mod_files(game_domain_name:, mod_id:)
|
|
69
|
+
end
|
|
70
|
+
|
|
45
71
|
end
|
|
46
72
|
|
|
47
73
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class NexusMods
|
|
2
|
+
|
|
3
|
+
module Api
|
|
4
|
+
|
|
5
|
+
# Base class for any API resource
|
|
6
|
+
class Resource
|
|
7
|
+
|
|
8
|
+
# Constructor
|
|
9
|
+
#
|
|
10
|
+
# Parameters::
|
|
11
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
12
|
+
def initialize(nexus_mods:)
|
|
13
|
+
@nexus_mods = nexus_mods
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
data/lib/nexus_mods/api/user.rb
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
require 'nexus_mods/api/resource'
|
|
2
|
+
|
|
1
3
|
class NexusMods
|
|
2
4
|
|
|
3
5
|
module Api
|
|
4
6
|
|
|
5
7
|
# A user on NExusMods.
|
|
6
8
|
# Mainly used for uploaders information.
|
|
7
|
-
class User
|
|
9
|
+
class User < Resource
|
|
8
10
|
|
|
9
11
|
attr_reader(
|
|
10
12
|
*%i[
|
|
@@ -18,16 +20,19 @@ class NexusMods
|
|
|
18
20
|
# Constructor
|
|
19
21
|
#
|
|
20
22
|
# Parameters::
|
|
23
|
+
# * *nexus_mods* (NexusMods): The NexusMods API instance that the resource can use to query for other resources
|
|
21
24
|
# * *member_id* (Integer): The user's member id
|
|
22
25
|
# * *member_group_id* (Integer): The user's member group id
|
|
23
26
|
# * *name* (String): The user's name
|
|
24
27
|
# * *profile_url* (String): The user's profile URL
|
|
25
28
|
def initialize(
|
|
29
|
+
nexus_mods:,
|
|
26
30
|
member_id:,
|
|
27
31
|
member_group_id:,
|
|
28
32
|
name:,
|
|
29
33
|
profile_url:
|
|
30
34
|
)
|
|
35
|
+
super(nexus_mods:)
|
|
31
36
|
@member_id = member_id
|
|
32
37
|
@member_group_id = member_group_id
|
|
33
38
|
@name = name
|
data/lib/nexus_mods/version.rb
CHANGED
data/lib/nexus_mods.rb
CHANGED
|
@@ -88,6 +88,7 @@ class NexusMods
|
|
|
88
88
|
def api_limits
|
|
89
89
|
api_limits_headers = @api_client.http('users/validate').headers
|
|
90
90
|
Api::ApiLimits.new(
|
|
91
|
+
nexus_mods: self,
|
|
91
92
|
daily_limit: Integer(api_limits_headers['x-rl-daily-limit']),
|
|
92
93
|
daily_remaining: Integer(api_limits_headers['x-rl-daily-remaining']),
|
|
93
94
|
daily_reset: Time.parse(api_limits_headers['x-rl-daily-reset']).utc,
|
|
@@ -113,6 +114,7 @@ class NexusMods
|
|
|
113
114
|
category_id,
|
|
114
115
|
[
|
|
115
116
|
Api::Category.new(
|
|
117
|
+
nexus_mods: self,
|
|
116
118
|
id: category_id,
|
|
117
119
|
name: category_json['name']
|
|
118
120
|
),
|
|
@@ -125,6 +127,7 @@ class NexusMods
|
|
|
125
127
|
category.parent_category = categories[parent_category_id]&.first if parent_category_id
|
|
126
128
|
end
|
|
127
129
|
Api::Game.new(
|
|
130
|
+
nexus_mods: self,
|
|
128
131
|
id: game_json['id'],
|
|
129
132
|
name: game_json['name'],
|
|
130
133
|
forum_url: game_json['forum_url'],
|
|
@@ -175,6 +178,7 @@ class NexusMods
|
|
|
175
178
|
mod_cache_up_to_date?(game_domain_name:, mod_id:) if check_updates
|
|
176
179
|
mod_json = @api_client.api("games/#{game_domain_name}/mods/#{mod_id}", clear_cache:)
|
|
177
180
|
Api::Mod.new(
|
|
181
|
+
nexus_mods: self,
|
|
178
182
|
uid: mod_json['uid'],
|
|
179
183
|
mod_id: mod_json['mod_id'],
|
|
180
184
|
game_id: mod_json['game_id'],
|
|
@@ -189,6 +193,7 @@ class NexusMods
|
|
|
189
193
|
status: mod_json['status'],
|
|
190
194
|
available: mod_json['available'],
|
|
191
195
|
uploader: Api::User.new(
|
|
196
|
+
nexus_mods: self,
|
|
192
197
|
member_id: mod_json['user']['member_id'],
|
|
193
198
|
member_group_id: mod_json['user']['member_group_id'],
|
|
194
199
|
name: mod_json['user']['name'],
|
|
@@ -241,6 +246,9 @@ class NexusMods
|
|
|
241
246
|
mod_files_cache_up_to_date?(game_domain_name:, mod_id:) if check_updates
|
|
242
247
|
@api_client.api("games/#{game_domain_name}/mods/#{mod_id}/files", clear_cache:)['files'].map do |file_json|
|
|
243
248
|
Api::ModFile.new(
|
|
249
|
+
nexus_mods: self,
|
|
250
|
+
game_domain_name:,
|
|
251
|
+
mod_id:,
|
|
244
252
|
ids: file_json['id'],
|
|
245
253
|
uid: file_json['uid'],
|
|
246
254
|
id: file_json['file_id'],
|
|
@@ -298,6 +306,8 @@ class NexusMods
|
|
|
298
306
|
def updated_mods(game_domain_name: @game_domain_name, since: :one_day, clear_cache: false)
|
|
299
307
|
@api_client.api("games/#{game_domain_name}/mods/updated", parameters: period_to_url_params(since), clear_cache:).map do |updated_mod_json|
|
|
300
308
|
Api::ModUpdates.new(
|
|
309
|
+
nexus_mods: self,
|
|
310
|
+
game_domain_name:,
|
|
301
311
|
mod_id: updated_mod_json['mod_id'],
|
|
302
312
|
latest_file_update: Time.at(updated_mod_json['latest_file_update']).utc,
|
|
303
313
|
latest_mod_activity: Time.at(updated_mod_json['latest_mod_activity']).utc
|
|
@@ -60,6 +60,14 @@ describe NexusMods::Api::ModFile do
|
|
|
60
60
|
expect_mod_files_to_be_example(nexus_mods.mod_files(game_domain_name: 'skyrimspecialedition'))
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
+
it 'returns the mod associated to the mod file' do
|
|
64
|
+
expect_http_call_to(
|
|
65
|
+
path: '/v1/games/skyrimspecialedition/mods/2014.json',
|
|
66
|
+
json: json_complete_mod
|
|
67
|
+
)
|
|
68
|
+
expect_mod_to_be_complete(nexus_mods.mod_files(game_domain_name: 'skyrimspecialedition', mod_id: 2014).first.mod)
|
|
69
|
+
end
|
|
70
|
+
|
|
63
71
|
end
|
|
64
72
|
|
|
65
73
|
it 'compares objects for equality' do
|
|
@@ -83,6 +91,7 @@ describe NexusMods::Api::ModFile do
|
|
|
83
91
|
archived: 7,
|
|
84
92
|
unknown: 100
|
|
85
93
|
}.each do |category, category_id|
|
|
94
|
+
|
|
86
95
|
it "accepts mod files having category #{category}" do
|
|
87
96
|
expect_http_call_to(
|
|
88
97
|
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
|
@@ -119,6 +128,7 @@ describe NexusMods::Api::ModFile do
|
|
|
119
128
|
expect(mod_file.category).to eq category
|
|
120
129
|
expect(mod_file.category_id).to eq category_id
|
|
121
130
|
end
|
|
131
|
+
|
|
122
132
|
end
|
|
123
133
|
|
|
124
134
|
context 'when checking cache data freshness' do
|
|
@@ -63,6 +63,14 @@ describe NexusMods::Api::Mod do
|
|
|
63
63
|
expect(mod1).to eq mod2
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
+
it 'returns the mod files associated to the mod' do
|
|
67
|
+
expect_http_call_to(
|
|
68
|
+
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
|
69
|
+
json: { 'files' => [json_mod_file2472] }
|
|
70
|
+
)
|
|
71
|
+
expect_mod_file_to_be2472(nexus_mods.mod(game_domain_name: 'skyrimspecialedition', mod_id: 2014).files.first)
|
|
72
|
+
end
|
|
73
|
+
|
|
66
74
|
end
|
|
67
75
|
|
|
68
76
|
context 'when checking cache data freshness' do
|
|
@@ -78,6 +78,34 @@ describe NexusMods::Api::ModUpdates do
|
|
|
78
78
|
expect(mod_updates1).to eq mod_updates2
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
+
it 'returns the mod associated to the mod updates' do
|
|
82
|
+
expect_http_call_to(
|
|
83
|
+
path: "/v1/games/skyrimspecialedition/mods/updated.json?#{since_config[:expected_url_params]}",
|
|
84
|
+
json: [
|
|
85
|
+
json_mod_updates2014
|
|
86
|
+
]
|
|
87
|
+
)
|
|
88
|
+
expect_http_call_to(
|
|
89
|
+
path: '/v1/games/skyrimspecialedition/mods/2014.json',
|
|
90
|
+
json: json_complete_mod
|
|
91
|
+
)
|
|
92
|
+
expect_mod_to_be_complete(nexus_mods.updated_mods(game_domain_name: 'skyrimspecialedition', since: since_config[:since]).first.mod)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it 'returns the mod files associated to the mod updates' do
|
|
96
|
+
expect_http_call_to(
|
|
97
|
+
path: "/v1/games/skyrimspecialedition/mods/updated.json?#{since_config[:expected_url_params]}",
|
|
98
|
+
json: [
|
|
99
|
+
json_mod_updates2014
|
|
100
|
+
]
|
|
101
|
+
)
|
|
102
|
+
expect_http_call_to(
|
|
103
|
+
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
|
104
|
+
json: { 'files' => [json_mod_file2472] }
|
|
105
|
+
)
|
|
106
|
+
expect_mod_file_to_be2472(nexus_mods.updated_mods(game_domain_name: 'skyrimspecialedition', since: since_config[:since]).first.mod_files.first)
|
|
107
|
+
end
|
|
108
|
+
|
|
81
109
|
end
|
|
82
110
|
|
|
83
111
|
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: 2.
|
|
4
|
+
version: 2.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Muriel Salvan
|
|
@@ -138,6 +138,7 @@ files:
|
|
|
138
138
|
- lib/nexus_mods/api/mod.rb
|
|
139
139
|
- lib/nexus_mods/api/mod_file.rb
|
|
140
140
|
- lib/nexus_mods/api/mod_updates.rb
|
|
141
|
+
- lib/nexus_mods/api/resource.rb
|
|
141
142
|
- lib/nexus_mods/api/user.rb
|
|
142
143
|
- lib/nexus_mods/api_client.rb
|
|
143
144
|
- lib/nexus_mods/cacheable_api.rb
|