nexus_mods 0.5.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/nexus_mods/api/mod_file.rb +14 -0
- data/lib/nexus_mods/version.rb +1 -1
- data/lib/nexus_mods.rb +1 -13
- data/spec/nexus_mods_test/factories/mod_files.rb +4 -2
- data/spec/nexus_mods_test/scenarios/nexus_mods/api/mod_file_spec.rb +66 -0
- data/spec/nexus_mods_test/scenarios/nexus_mods/api/mod_spec.rb +26 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b99b3c80e3d45a5bde54394040517dc6e7c3cb803dfa4b3be263a0283bdf5606
|
4
|
+
data.tar.gz: cae008f32c14745db775d1791c631f15cab5071e3dcd0ac0d4d0c0ce5ba1a1c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c0bf7800a21880cf748a0733d14483e3326d939671a5aa41b3e0076d3ef9ea46ff2e4d498078c95990a729542dd23ca15d229726e70b63eba139abd53ed828e
|
7
|
+
data.tar.gz: 754f2778855552657f7977d03fd8b84e58fc291b85b21f12dd6ee0d6a9baa6ade16670acc97244a043320f09d8b93e638b0ac4f680725b558b748c10bfcf99ba
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# [v1.0.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.6.0...v1.0.0) (2023-04-10 19:03:51)
|
2
|
+
|
3
|
+
### Breaking changes
|
4
|
+
|
5
|
+
* [[Breaking] Keep category_id in mod files and use category for interpretation, including unknowns categories](https://github.com/Muriel-Salvan/nexus_mods/commit/a6b01df6d03d27ee880260e46884f09e6a497f1d)
|
6
|
+
|
7
|
+
# [v0.6.0](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.5.1...v0.6.0) (2023-04-10 17:30:40)
|
8
|
+
|
9
|
+
### Features
|
10
|
+
|
11
|
+
* [[Feature] Provide accessors for the default game domain name and mod id](https://github.com/Muriel-Salvan/nexus_mods/commit/ee2ba5c4d3eccf1adae2cc781c5988625537c341)
|
12
|
+
|
1
13
|
# [v0.5.1](https://github.com/Muriel-Salvan/nexus_mods/compare/v0.5.0...v0.5.1) (2023-04-10 17:19:39)
|
2
14
|
|
3
15
|
### Patches
|
@@ -14,6 +14,7 @@ class NexusMods
|
|
14
14
|
id
|
15
15
|
name
|
16
16
|
version
|
17
|
+
category
|
17
18
|
category_id
|
18
19
|
category_name
|
19
20
|
is_primary
|
@@ -28,6 +29,17 @@ class NexusMods
|
|
28
29
|
]
|
29
30
|
)
|
30
31
|
|
32
|
+
# Enum of file categories from the API
|
33
|
+
FILE_CATEGORIES = {
|
34
|
+
1 => :main,
|
35
|
+
2 => :patch,
|
36
|
+
3 => :optional,
|
37
|
+
4 => :old,
|
38
|
+
5 => :miscellaneous,
|
39
|
+
6 => :deleted,
|
40
|
+
7 => :archived
|
41
|
+
}
|
42
|
+
|
31
43
|
# Constructor
|
32
44
|
#
|
33
45
|
# Parameters::
|
@@ -81,6 +93,8 @@ class NexusMods
|
|
81
93
|
@description = description
|
82
94
|
@changelog_html = changelog_html
|
83
95
|
@content_preview_url = content_preview_url
|
96
|
+
# Extra fields for sugar
|
97
|
+
@category = FILE_CATEGORIES[category_id] || :unknown
|
84
98
|
end
|
85
99
|
|
86
100
|
# Equality operator
|
data/lib/nexus_mods/version.rb
CHANGED
data/lib/nexus_mods.rb
CHANGED
@@ -182,15 +182,6 @@ class NexusMods
|
|
182
182
|
)
|
183
183
|
end
|
184
184
|
|
185
|
-
# Enum of file categories from the API
|
186
|
-
FILE_CATEGORIES = {
|
187
|
-
1 => :main,
|
188
|
-
2 => :patch,
|
189
|
-
3 => :optional,
|
190
|
-
4 => :old,
|
191
|
-
6 => :deleted
|
192
|
-
}
|
193
|
-
|
194
185
|
# Get files belonging to a mod
|
195
186
|
#
|
196
187
|
# Parameters::
|
@@ -201,16 +192,13 @@ class NexusMods
|
|
201
192
|
# * Array<ModFile>: List of mod's files
|
202
193
|
def mod_files(game_domain_name: @game_domain_name, mod_id: @mod_id, clear_cache: false)
|
203
194
|
@api_client.api("games/#{game_domain_name}/mods/#{mod_id}/files", clear_cache:)['files'].map do |file_json|
|
204
|
-
category_id = FILE_CATEGORIES[file_json['category_id']]
|
205
|
-
raise "Unknown file category: #{file_json['category_id']}" if category_id.nil?
|
206
|
-
|
207
195
|
Api::ModFile.new(
|
208
196
|
ids: file_json['id'],
|
209
197
|
uid: file_json['uid'],
|
210
198
|
id: file_json['file_id'],
|
211
199
|
name: file_json['name'],
|
212
200
|
version: file_json['version'],
|
213
|
-
category_id
|
201
|
+
category_id: file_json['category_id'],
|
214
202
|
category_name: file_json['category_name'],
|
215
203
|
is_primary: file_json['is_primary'],
|
216
204
|
size: file_json['size_in_bytes'],
|
@@ -70,7 +70,8 @@ module NexusModsTest
|
|
70
70
|
expect(mod_file.id).to eq 2472
|
71
71
|
expect(mod_file.name).to eq 'ApachiiSkyHair_v_1_6_Full'
|
72
72
|
expect(mod_file.version).to eq '1.6.Full'
|
73
|
-
expect(mod_file.
|
73
|
+
expect(mod_file.category).to eq :old
|
74
|
+
expect(mod_file.category_id).to eq 4
|
74
75
|
expect(mod_file.category_name).to eq 'OLD_VERSION'
|
75
76
|
expect(mod_file.is_primary).to be false
|
76
77
|
expect(mod_file.size).to eq 309_251_227
|
@@ -93,7 +94,8 @@ module NexusModsTest
|
|
93
94
|
expect(mod_file.id).to eq 2487
|
94
95
|
expect(mod_file.name).to eq 'ApachiiSkyHairMale_v_1_2'
|
95
96
|
expect(mod_file.version).to eq '1.2'
|
96
|
-
expect(mod_file.
|
97
|
+
expect(mod_file.category).to eq :old
|
98
|
+
expect(mod_file.category_id).to eq 4
|
97
99
|
expect(mod_file.category_name).to eq 'OLD_VERSION'
|
98
100
|
expect(mod_file.is_primary).to be false
|
99
101
|
expect(mod_file.size).to eq 209_251_227
|
@@ -49,6 +49,15 @@ describe NexusMods::Api::ModFile do
|
|
49
49
|
expect_mod_files_to_be_example(nexus_mods(game_domain_name: 'skyrimspecialedition').mod_files(mod_id: 2014))
|
50
50
|
end
|
51
51
|
|
52
|
+
it 'returns mod files list for the default game set using accessor' do
|
53
|
+
expect_http_call_to(
|
54
|
+
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
55
|
+
json: { files: json_example_mod_files }
|
56
|
+
)
|
57
|
+
nexus_mods.game_domain_name = 'skyrimspecialedition'
|
58
|
+
expect_mod_files_to_be_example(nexus_mods.mod_files(mod_id: 2014))
|
59
|
+
end
|
60
|
+
|
52
61
|
it 'returns mod files list for the default game and mod' do
|
53
62
|
expect_http_call_to(
|
54
63
|
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
@@ -57,6 +66,15 @@ describe NexusMods::Api::ModFile do
|
|
57
66
|
expect_mod_files_to_be_example(nexus_mods(game_domain_name: 'skyrimspecialedition', mod_id: 2014).mod_files)
|
58
67
|
end
|
59
68
|
|
69
|
+
it 'returns mod files list for the default game and mod using accessor' do
|
70
|
+
expect_http_call_to(
|
71
|
+
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
72
|
+
json: { files: json_example_mod_files }
|
73
|
+
)
|
74
|
+
nexus_mods.mod_id = 2014
|
75
|
+
expect_mod_files_to_be_example(nexus_mods.mod_files(game_domain_name: 'skyrimspecialedition'))
|
76
|
+
end
|
77
|
+
|
60
78
|
it 'compares objects for equality' do
|
61
79
|
expect_http_call_to(
|
62
80
|
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
@@ -68,6 +86,54 @@ describe NexusMods::Api::ModFile do
|
|
68
86
|
expect(mod_file1).to eq mod_file2
|
69
87
|
end
|
70
88
|
|
89
|
+
{
|
90
|
+
main: 1,
|
91
|
+
patch: 2,
|
92
|
+
optional: 3,
|
93
|
+
old: 4,
|
94
|
+
miscellaneous: 5,
|
95
|
+
deleted: 6,
|
96
|
+
archived: 7,
|
97
|
+
unknown: 100
|
98
|
+
}.each do |category, category_id|
|
99
|
+
it "accepts mod files having category #{category}" do
|
100
|
+
expect_http_call_to(
|
101
|
+
path: '/v1/games/skyrimspecialedition/mods/2014/files.json',
|
102
|
+
json: {
|
103
|
+
files: [
|
104
|
+
{
|
105
|
+
'id' => [
|
106
|
+
2472,
|
107
|
+
1704
|
108
|
+
],
|
109
|
+
'uid' => 7_318_624_274_856,
|
110
|
+
'file_id' => 2472,
|
111
|
+
'name' => 'ApachiiSkyHair_v_1_6_Full',
|
112
|
+
'version' => '1.6.Full',
|
113
|
+
'category_id' => category_id,
|
114
|
+
'category_name' => 'OLD_VERSION',
|
115
|
+
'is_primary' => false,
|
116
|
+
'file_name' => 'ApachiiSkyHair_v_1_6_Full-2014-1-6-Full.7z',
|
117
|
+
'uploaded_timestamp' => 1_477_967_645,
|
118
|
+
'uploaded_time' => '2016-11-01T02:34:05.000+00:00',
|
119
|
+
'mod_version' => '1.6.Full',
|
120
|
+
'external_virus_scan_url' => 'https://www.virustotal.com/file/3dcc96dce0b846ea643d626c48bd6ad08752da8232f3d29be644d36e1fd627cf/analysis/1477978674/',
|
121
|
+
'description' => '[b][color=orange] NOT optimized meshes. Standalone. Adds 42 new hairstyles for females, 21 hair for males and 5 hairs for Female Khajiit- 2 hairs for Male Khajiit[/color][/b] ',
|
122
|
+
'size' => 304_347,
|
123
|
+
'size_kb' => 304_347,
|
124
|
+
'size_in_bytes' => 309_251_227,
|
125
|
+
'changelog_html' => nil,
|
126
|
+
'content_preview_link' => 'https://file-metadata.nexusmods.com/file/nexus-files-meta/1704/2014/ApachiiSkyHair_v_1_6_Full-2014-1-6-Full.7z.json'
|
127
|
+
}
|
128
|
+
]
|
129
|
+
}
|
130
|
+
)
|
131
|
+
mod_file = nexus_mods(game_domain_name: 'skyrimspecialedition', mod_id: 2014).mod_files.first
|
132
|
+
expect(mod_file.category).to eq category
|
133
|
+
expect(mod_file.category_id).to eq category_id
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
71
137
|
end
|
72
138
|
|
73
139
|
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',
|