curseforge 0.2.1 → 0.3.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/.env.example +1 -0
- data/lib/curseforge/error.rb +11 -0
- data/lib/curseforge/version.rb +2 -2
- data/lib/curseforge.rb +18 -26
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da00e0c6338f15e272e1bb866b455dfa60cdcb69db648945fa31c55aaf9f492d
|
4
|
+
data.tar.gz: d5e4efcba49878147bc0b707b22aca679de07de44af2466aaa9013d8b92aa171
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ede150b6b6210a9078a0127819501446f78358255780275ba007b2b6df0b07a8cf463d0b33e8a74d465ea68b7b407318bc1126e0b4917775239568ceb9e695d0
|
7
|
+
data.tar.gz: 3b5c9ee72dea8ad134225164c6c5e0eb6f6512a7fe0446d72cee80c341ea49bc814789fb9b8f53c4bd63a78d29aed665881f42b3d1425b8c2e68dd1179623ba8
|
data/.env.example
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
CURSEFORGE_TOKEN='token'
|
data/lib/curseforge/version.rb
CHANGED
data/lib/curseforge.rb
CHANGED
@@ -6,30 +6,22 @@ require 'json'
|
|
6
6
|
# CurseForge API Wrapper
|
7
7
|
# by PackBuilder.io
|
8
8
|
class CurseForge
|
9
|
-
class Error < StandardError
|
10
|
-
attr_reader :response
|
11
|
-
|
12
|
-
def initialize(response, message)
|
13
|
-
super(message || "Received #{response.status} status code")
|
14
|
-
|
15
|
-
@response = response
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
9
|
require_relative 'curseforge/version'
|
10
|
+
require_relative 'curseforge/error'
|
20
11
|
|
21
|
-
def initialize(token)
|
12
|
+
def initialize(token, **options)
|
22
13
|
@token = token
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
|
15
|
+
options[:url] ||= 'https://api.curseforge.com'
|
16
|
+
options[:headers] ||= {}
|
17
|
+
options[:headers]["x-api-key"] = @token
|
18
|
+
@api = Faraday.new(options)
|
27
19
|
end
|
28
20
|
|
29
21
|
# @param [Integer] mod_id
|
30
22
|
# @raise [Faraday::Error]
|
31
23
|
# @return [Hash]
|
32
|
-
# @see https://docs.curseforge.com/rest-api/#
|
24
|
+
# @see https://docs.curseforge.com/rest-api/#get-mod
|
33
25
|
def get_mod(mod_id)
|
34
26
|
req(:get, "/v1/mods/#{mod_id}")
|
35
27
|
end
|
@@ -38,7 +30,7 @@ class CurseForge
|
|
38
30
|
# @param [Boolean] filter_pc_only
|
39
31
|
# @raise [Faraday::Error]
|
40
32
|
# @return [Hash]
|
41
|
-
# @see https://docs.curseforge.com/rest-api/#
|
33
|
+
# @see https://docs.curseforge.com/rest-api/#get-mods
|
42
34
|
def get_mods(*mods_ids, filter_pc_only: true)
|
43
35
|
req(:post, '/v1/mods', body: {
|
44
36
|
modIds: mods_ids,
|
@@ -49,7 +41,7 @@ class CurseForge
|
|
49
41
|
# @param [Hash] json
|
50
42
|
# @raise [Faraday::Error]
|
51
43
|
# @return [Hash]
|
52
|
-
# @see https://docs.curseforge.com/rest-api/#
|
44
|
+
# @see https://docs.curseforge.com/rest-api/#get-mods
|
53
45
|
# @example
|
54
46
|
# require 'json'
|
55
47
|
# require 'curseforge'
|
@@ -60,7 +52,7 @@ class CurseForge
|
|
60
52
|
# client = CurseForge.new('token')
|
61
53
|
# mods = client.get_mods_from_manifest(json)
|
62
54
|
def get_mods_from_manifest(json)
|
63
|
-
get_mods(json['files'].map
|
55
|
+
get_mods(*json['files'].map { |f| f['projectID'] })
|
64
56
|
end
|
65
57
|
|
66
58
|
# Filters mods based on the given query parameters.
|
@@ -94,12 +86,12 @@ class CurseForge
|
|
94
86
|
|
95
87
|
private
|
96
88
|
|
97
|
-
|
98
|
-
|
99
|
-
|
89
|
+
def req(method, path, body: nil, headers: nil)
|
90
|
+
resp = @api.send(method, path, body, headers)
|
91
|
+
raise CurseForge::Error.new(resp, "received #{resp.status}") unless resp.success?
|
100
92
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
93
|
+
JSON.parse(resp.body)
|
94
|
+
rescue JSON::ParserError => e
|
95
|
+
raise CurseForge::Error.new(resp, e.message)
|
96
|
+
end
|
105
97
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curseforge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Goob-Hub
|
@@ -32,6 +32,7 @@ executables: []
|
|
32
32
|
extensions: []
|
33
33
|
extra_rdoc_files: []
|
34
34
|
files:
|
35
|
+
- ".env.example"
|
35
36
|
- ".rspec"
|
36
37
|
- CHANGELOG.md
|
37
38
|
- CODE_OF_CONDUCT.md
|
@@ -39,6 +40,7 @@ files:
|
|
39
40
|
- README.md
|
40
41
|
- Rakefile
|
41
42
|
- lib/curseforge.rb
|
43
|
+
- lib/curseforge/error.rb
|
42
44
|
- lib/curseforge/version.rb
|
43
45
|
- sig/curseforge.rbs
|
44
46
|
homepage: https://github.com/packbuilder/curseforge/
|