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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 594f8baa31334008dafd7548a851220d1c9a90744f4b637ca6ffab0783f713bc
4
- data.tar.gz: 5f00e75e48a28cbe43cafe6bbbc202b6fac8f6e377cb0616e975bfd58c5571bc
3
+ metadata.gz: da00e0c6338f15e272e1bb866b455dfa60cdcb69db648945fa31c55aaf9f492d
4
+ data.tar.gz: d5e4efcba49878147bc0b707b22aca679de07de44af2466aaa9013d8b92aa171
5
5
  SHA512:
6
- metadata.gz: ed3c32b3a6d4ba198710f5ba369ac9e5c04d66c54eaa94c11b2cbc12f1296909d2dff831b4608f0a3a156ec9d1ee21d465134b0c2aa2a55ca18c0b87007841eb
7
- data.tar.gz: 548058d22b7947c5e9a2bca321af354530e1b7d45c719a40329c847fabfc0535454dc505f0daf01c5ede4fd9e396be88680cf62b2687cc124ef5d49956f52c76
6
+ metadata.gz: ede150b6b6210a9078a0127819501446f78358255780275ba007b2b6df0b07a8cf463d0b33e8a74d465ea68b7b407318bc1126e0b4917775239568ceb9e695d0
7
+ data.tar.gz: 3b5c9ee72dea8ad134225164c6c5e0eb6f6512a7fe0446d72cee80c341ea49bc814789fb9b8f53c4bd63a78d29aed665881f42b3d1425b8c2e68dd1179623ba8
data/.env.example ADDED
@@ -0,0 +1 @@
1
+ CURSEFORGE_TOKEN='token'
@@ -0,0 +1,11 @@
1
+ class CurseForge
2
+ class Error < StandardError
3
+ attr_reader :response
4
+
5
+ def initialize(response, message)
6
+ super(message)
7
+
8
+ @response = response
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class CurseForge
4
- VERSION = '0.2.1'
5
- end
4
+ VERSION = '0.3.0'
5
+ end
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
- @api = Faraday.new(
24
- url: 'https://api.curseforge.com',
25
- headers: { 'x-api-key' => @token }
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/#schemaget%20mod%20response
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/#schemaget%20mods%20response
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/#schemaget%20mods%20response
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(&:projectID))
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
- def req(method, path, body: nil, headers: nil)
98
- resp = @api.send(method, path, body, headers)
99
- raise Error.new(resp) unless resp.success?
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
- JSON.parse(resp.body)
102
- rescue StandardError => e
103
- raise Error.new(resp, e)
104
- end
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.2.1
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/