curseforge 0.1.0 → 0.2.1

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: d43af937748b81ae05d58c293e1ad04283d46f2a69442153b7e70b89931de91c
4
- data.tar.gz: abc5eb38d6c75a342bd8f1ffa623855fac6ed1379cc5945438ec18f34d506094
3
+ metadata.gz: 594f8baa31334008dafd7548a851220d1c9a90744f4b637ca6ffab0783f713bc
4
+ data.tar.gz: 5f00e75e48a28cbe43cafe6bbbc202b6fac8f6e377cb0616e975bfd58c5571bc
5
5
  SHA512:
6
- metadata.gz: 8651f4056171da5957946603dbfab5c4210495705d6e8d50be57360c0666ce68bbe9c57b8c326d999b5e186bc116534ccd2b9ba92ccd6b15eaf918114124df5c
7
- data.tar.gz: 36015242b803ed63fd9b74d8a47d12e486221d4961b1a5c539267c4112a059c67ecd19acf953893d49ed2455b93219329b42c3f850a8618e903debb84259fa47
6
+ metadata.gz: ed3c32b3a6d4ba198710f5ba369ac9e5c04d66c54eaa94c11b2cbc12f1296909d2dff831b4608f0a3a156ec9d1ee21d465134b0c2aa2a55ca18c0b87007841eb
7
+ data.tar.gz: 548058d22b7947c5e9a2bca321af354530e1b7d45c719a40329c847fabfc0535454dc505f0daf01c5ede4fd9e396be88680cf62b2687cc124ef5d49956f52c76
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class CurseForge
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.1'
5
5
  end
data/lib/curseforge.rb CHANGED
@@ -1,10 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'faraday'
4
+ require 'json'
4
5
 
5
6
  # CurseForge API Wrapper
6
7
  # by PackBuilder.io
7
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
+
8
19
  require_relative 'curseforge/version'
9
20
 
10
21
  def initialize(token)
@@ -20,7 +31,7 @@ class CurseForge
20
31
  # @return [Hash]
21
32
  # @see https://docs.curseforge.com/rest-api/#schemaget%20mod%20response
22
33
  def get_mod(mod_id)
23
- get_request("/v1/mods/#{mod_id}")
34
+ req(:get, "/v1/mods/#{mod_id}")
24
35
  end
25
36
 
26
37
  # @param [Array<Integer>] mod_ids
@@ -29,10 +40,10 @@ class CurseForge
29
40
  # @return [Hash]
30
41
  # @see https://docs.curseforge.com/rest-api/#schemaget%20mods%20response
31
42
  def get_mods(*mods_ids, filter_pc_only: true)
32
- post_request('/v1/mods', body: {
43
+ req(:post, '/v1/mods', body: {
33
44
  modIds: mods_ids,
34
45
  filterPCOnly: filter_pc_only
35
- }, headers: { 'Content-Type' => 'application/json' })
46
+ }.to_json, headers: { 'Content-Type' => 'application/json' })["data"]
36
47
  end
37
48
 
38
49
  # @param [Hash] json
@@ -78,19 +89,17 @@ class CurseForge
78
89
  # @see https://docs.curseforge.com/rest-api/#schemasearch%20mods%20response
79
90
  def search_mods(game_id, **query)
80
91
  query[:gameId] = game_id
81
- get_request('/v1/mods/search', body: query)
92
+ req(:get, '/v1/mods/search', body: query)
82
93
  end
83
94
 
84
95
  private
85
96
 
86
97
  def req(method, path, body: nil, headers: nil)
87
- # TODO: actual error handling
88
- @api.send(method, path, body, headers).body
89
- end
98
+ resp = @api.send(method, path, body, headers)
99
+ raise Error.new(resp) unless resp.success?
90
100
 
91
- %i[get post put delete].each do |method|
92
- define_method(:"#{method}_request") do |path, body: nil, headers: nil|
93
- req(method, path, body: body, headers: headers)
94
- end
101
+ JSON.parse(resp.body)
102
+ rescue StandardError => e
103
+ raise Error.new(resp, e)
95
104
  end
96
105
  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.1.0
4
+ version: 0.2.1
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: 2024-12-22 00:00:00.000000000 Z
11
+ date: 2025-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  requirements: []
64
- rubygems_version: 3.6.1
64
+ rubygems_version: 3.6.2
65
65
  specification_version: 4
66
66
  summary: CurseForge API Wrapper
67
67
  test_files: []