curseforge 0.1.1 → 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: 48378e345c14758cf0a44b052ce525164bb67dc26d8c5427de1094f17cfcad15
4
- data.tar.gz: 4b8b18a3339139baf1307c585bd92104a3e204d267c4c38f929d87940928a254
3
+ metadata.gz: 594f8baa31334008dafd7548a851220d1c9a90744f4b637ca6ffab0783f713bc
4
+ data.tar.gz: 5f00e75e48a28cbe43cafe6bbbc202b6fac8f6e377cb0616e975bfd58c5571bc
5
5
  SHA512:
6
- metadata.gz: a5aeee4b11bdb9252da519cf8faae58441f5370c2ad5abc80462397d06d2f84a0ea65ce1c8a1414a940a1677191783aea50b4aef9970c3bcd89a6b328d4e2959
7
- data.tar.gz: 3063fd94bee136ac1ab2943ede304a1011e8cdec13234abb72d4f8cc8bbd0e4644f867a94128caa4ed2b53ca8eb6c4f4ca159cdd9f57db6c9de5a593adfedbe6
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.1'
4
+ VERSION = '0.2.1'
5
5
  end
data/lib/curseforge.rb CHANGED
@@ -6,6 +6,16 @@ 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
+
9
19
  require_relative 'curseforge/version'
10
20
 
11
21
  def initialize(token)
@@ -21,7 +31,7 @@ class CurseForge
21
31
  # @return [Hash]
22
32
  # @see https://docs.curseforge.com/rest-api/#schemaget%20mod%20response
23
33
  def get_mod(mod_id)
24
- get_request("/v1/mods/#{mod_id}")
34
+ req(:get, "/v1/mods/#{mod_id}")
25
35
  end
26
36
 
27
37
  # @param [Array<Integer>] mod_ids
@@ -30,7 +40,7 @@ class CurseForge
30
40
  # @return [Hash]
31
41
  # @see https://docs.curseforge.com/rest-api/#schemaget%20mods%20response
32
42
  def get_mods(*mods_ids, filter_pc_only: true)
33
- post_request('/v1/mods', body: {
43
+ req(:post, '/v1/mods', body: {
34
44
  modIds: mods_ids,
35
45
  filterPCOnly: filter_pc_only
36
46
  }.to_json, headers: { 'Content-Type' => 'application/json' })["data"]
@@ -79,20 +89,17 @@ class CurseForge
79
89
  # @see https://docs.curseforge.com/rest-api/#schemasearch%20mods%20response
80
90
  def search_mods(game_id, **query)
81
91
  query[:gameId] = game_id
82
- get_request('/v1/mods/search', body: query)
92
+ req(:get, '/v1/mods/search', body: query)
83
93
  end
84
94
 
85
95
  private
86
96
 
87
97
  def req(method, path, body: nil, headers: nil)
88
- @api.send(method, path, body, headers)
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
- resp = req(method, path, body: body, headers: headers)
94
-
95
- JSON.parse(resp.body)
96
- end
101
+ JSON.parse(resp.body)
102
+ rescue StandardError => e
103
+ raise Error.new(resp, e)
97
104
  end
98
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.1
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-27 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