curseforge 0.1.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 +19 -20
- metadata +4 -2
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
@@ -7,30 +7,32 @@ require 'json'
|
|
7
7
|
# by PackBuilder.io
|
8
8
|
class CurseForge
|
9
9
|
require_relative 'curseforge/version'
|
10
|
+
require_relative 'curseforge/error'
|
10
11
|
|
11
|
-
def initialize(token)
|
12
|
+
def initialize(token, **options)
|
12
13
|
@token = token
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
|
15
|
+
options[:url] ||= 'https://api.curseforge.com'
|
16
|
+
options[:headers] ||= {}
|
17
|
+
options[:headers]["x-api-key"] = @token
|
18
|
+
@api = Faraday.new(options)
|
17
19
|
end
|
18
20
|
|
19
21
|
# @param [Integer] mod_id
|
20
22
|
# @raise [Faraday::Error]
|
21
23
|
# @return [Hash]
|
22
|
-
# @see https://docs.curseforge.com/rest-api/#
|
24
|
+
# @see https://docs.curseforge.com/rest-api/#get-mod
|
23
25
|
def get_mod(mod_id)
|
24
|
-
|
26
|
+
req(:get, "/v1/mods/#{mod_id}")
|
25
27
|
end
|
26
28
|
|
27
29
|
# @param [Array<Integer>] mod_ids
|
28
30
|
# @param [Boolean] filter_pc_only
|
29
31
|
# @raise [Faraday::Error]
|
30
32
|
# @return [Hash]
|
31
|
-
# @see https://docs.curseforge.com/rest-api/#
|
33
|
+
# @see https://docs.curseforge.com/rest-api/#get-mods
|
32
34
|
def get_mods(*mods_ids, filter_pc_only: true)
|
33
|
-
|
35
|
+
req(:post, '/v1/mods', body: {
|
34
36
|
modIds: mods_ids,
|
35
37
|
filterPCOnly: filter_pc_only
|
36
38
|
}.to_json, headers: { 'Content-Type' => 'application/json' })["data"]
|
@@ -39,7 +41,7 @@ class CurseForge
|
|
39
41
|
# @param [Hash] json
|
40
42
|
# @raise [Faraday::Error]
|
41
43
|
# @return [Hash]
|
42
|
-
# @see https://docs.curseforge.com/rest-api/#
|
44
|
+
# @see https://docs.curseforge.com/rest-api/#get-mods
|
43
45
|
# @example
|
44
46
|
# require 'json'
|
45
47
|
# require 'curseforge'
|
@@ -50,7 +52,7 @@ class CurseForge
|
|
50
52
|
# client = CurseForge.new('token')
|
51
53
|
# mods = client.get_mods_from_manifest(json)
|
52
54
|
def get_mods_from_manifest(json)
|
53
|
-
get_mods(json['files'].map
|
55
|
+
get_mods(*json['files'].map { |f| f['projectID'] })
|
54
56
|
end
|
55
57
|
|
56
58
|
# Filters mods based on the given query parameters.
|
@@ -79,20 +81,17 @@ class CurseForge
|
|
79
81
|
# @see https://docs.curseforge.com/rest-api/#schemasearch%20mods%20response
|
80
82
|
def search_mods(game_id, **query)
|
81
83
|
query[:gameId] = game_id
|
82
|
-
|
84
|
+
req(:get, '/v1/mods/search', body: query)
|
83
85
|
end
|
84
86
|
|
85
87
|
private
|
86
88
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
%i[get post put delete].each do |method|
|
92
|
-
define_method(:"#{method}_request") do |path, body: nil, headers: nil|
|
93
|
-
resp = req(method, path, body: body, headers: headers)
|
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?
|
94
92
|
|
95
93
|
JSON.parse(resp.body)
|
94
|
+
rescue JSON::ParserError => e
|
95
|
+
raise CurseForge::Error.new(resp, e.message)
|
96
96
|
end
|
97
|
-
end
|
98
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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
|
8
8
|
- Dylan Hackworth
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -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/
|