torn_ruby 0.1.0.beta → 1.0.0.beta

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +27 -0
  3. data/.gitignore +11 -0
  4. data/CHANGELOG.md +14 -2
  5. data/Gemfile +25 -0
  6. data/Gemfile.lock +95 -0
  7. data/README.md +12 -0
  8. data/bin/console +8 -0
  9. data/bin/setup +8 -0
  10. data/lib/torn_ruby/client.rb +32 -11
  11. data/lib/torn_ruby/endpoints/base.rb +7 -7
  12. data/lib/torn_ruby/endpoints/company.rb +1 -5
  13. data/lib/torn_ruby/endpoints/faction.rb +1 -5
  14. data/lib/torn_ruby/endpoints/forum.rb +17 -0
  15. data/lib/torn_ruby/endpoints/market.rb +1 -5
  16. data/lib/torn_ruby/endpoints/property.rb +1 -5
  17. data/lib/torn_ruby/endpoints/racing.rb +18 -0
  18. data/lib/torn_ruby/endpoints/torn.rb +21 -0
  19. data/lib/torn_ruby/endpoints/user.rb +1 -5
  20. data/lib/torn_ruby/forum.rb +10 -0
  21. data/lib/torn_ruby/racing.rb +11 -0
  22. data/lib/torn_ruby/torn.rb +11 -0
  23. data/lib/torn_ruby/version.rb +1 -1
  24. data/spec/spec_helper.rb +18 -0
  25. data/spec/torn_ruby/base_spec.rb +73 -0
  26. data/spec/torn_ruby/client_spec.rb +336 -0
  27. data/spec/torn_ruby/company_spec.rb +3 -0
  28. data/spec/torn_ruby/endpoints/company_spec.rb +3 -0
  29. data/spec/torn_ruby/endpoints/faction_spec.rb +3 -0
  30. data/spec/torn_ruby/endpoints/forum_spec.rb +3 -0
  31. data/spec/torn_ruby/endpoints/market_spec.rb +3 -0
  32. data/spec/torn_ruby/endpoints/property_spec.rb +34 -0
  33. data/spec/torn_ruby/endpoints/racing_spec.rb +3 -0
  34. data/spec/torn_ruby/endpoints/torn_spec.rb +3 -0
  35. data/spec/torn_ruby/endpoints/user_spec.rb +3 -0
  36. data/spec/torn_ruby/faction_spec.rb +3 -0
  37. data/spec/torn_ruby/forum_spec.rb +3 -0
  38. data/spec/torn_ruby/market_spec.rb +3 -0
  39. data/spec/torn_ruby/property_spec.rb +44 -0
  40. data/spec/torn_ruby/racing_spec.rb +3 -0
  41. data/spec/torn_ruby/torn_spec.rb +3 -0
  42. data/spec/torn_ruby/user_spec.rb +3 -0
  43. data/spec/torn_ruby/utils_spec.rb +32 -0
  44. data/spec/torn_ruby_spec.rb +1 -0
  45. data/torn_ruby.gemspec +41 -0
  46. metadata +41 -10
@@ -0,0 +1,336 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe TornRuby::Client do
6
+ let(:api_key) { "test_api_key" }
7
+ let(:client) { described_class.new(api_key: api_key) }
8
+
9
+ describe "#user" do
10
+ subject(:user) { client.user }
11
+
12
+ let(:mock_response) do
13
+ {
14
+ "rank" => "Star Trader",
15
+ "level" => 37,
16
+ "name" => "Bram",
17
+ "life" => {
18
+ "current" => 1725,
19
+ "maximum" => 1725
20
+ }
21
+ }
22
+ end
23
+
24
+ before do
25
+ user_endpoint = instance_double(TornRuby::Endpoints::User)
26
+ allow(TornRuby::Endpoints::User).to receive(:new).and_return(user_endpoint)
27
+ allow(user_endpoint).to receive(:fetch).and_return(mock_response)
28
+ end
29
+
30
+ it "returns a TornRuby::User with expected attributes" do
31
+ expect(user).to be_a(TornRuby::User)
32
+ .and have_attributes(
33
+ rank: "Star Trader",
34
+ level: 37,
35
+ name: "Bram",
36
+ life: hash_including(
37
+ current: 1725,
38
+ maximum: 1725
39
+ )
40
+ )
41
+ end
42
+ end
43
+
44
+ describe "#property" do
45
+ subject(:property) { client.property }
46
+
47
+ let(:mock_response) do
48
+ {
49
+ "owner_id" => 123_456,
50
+ "property_type" => 5,
51
+ "happy" => 9000,
52
+ "upkeep" => 100_000,
53
+ "upgrades" => %w[pool gym],
54
+ "staff" => %w[maid guard],
55
+ "rented" => false,
56
+ "users_living" => "123456,654321"
57
+ }
58
+ end
59
+
60
+ before do
61
+ property_endpoint = instance_double(TornRuby::Endpoints::Property)
62
+
63
+ allow(TornRuby::Endpoints::Property).to receive(:new).and_return(property_endpoint)
64
+ allow(property_endpoint).to receive(:fetch).and_return(mock_response)
65
+ end
66
+
67
+ it "returns a TornRuby::Property with expected attributes" do
68
+ expect(property).to be_a(TornRuby::Property)
69
+ .and have_attributes(
70
+ owner_id: 123_456,
71
+ property_type: 5,
72
+ happy: 9000,
73
+ upkeep: 100_000,
74
+ upgrades: %w[pool gym],
75
+ staff: %w[maid guard],
76
+ rented: false,
77
+ users_living: "123456,654321"
78
+ )
79
+ end
80
+
81
+ it "parses living user ids correctly" do
82
+ expect(property.living_user_ids).to eq([123_456, 654_321])
83
+ end
84
+
85
+ it "returns false for rented?" do
86
+ expect(property.rented?).to be(false)
87
+ end
88
+ end
89
+
90
+ describe "#faction" do
91
+ subject(:faction) { client.faction }
92
+
93
+ let(:mock_response) do
94
+ {
95
+ "ID" => 38_761,
96
+ "name" => "Shadow Healers",
97
+ "respect" => 2_450_100,
98
+ "rank" => {
99
+ "level" => 9,
100
+ "name" => "Silver",
101
+ "division" => 3
102
+ }
103
+ }
104
+ end
105
+
106
+ before do
107
+ faction_endpoint = instance_double(TornRuby::Endpoints::Faction)
108
+ allow(TornRuby::Endpoints::Faction).to receive(:new).and_return(faction_endpoint)
109
+ allow(faction_endpoint).to receive(:fetch).and_return(mock_response)
110
+ end
111
+
112
+ it "returns a TornRuby::Faction with expected attributes" do
113
+ expect(faction).to be_a(TornRuby::Faction)
114
+ .and have_attributes(
115
+ ID: 38_761,
116
+ name: "Shadow Healers",
117
+ respect: 2_450_100,
118
+ rank: hash_including(
119
+ level: 9,
120
+ name: "Silver",
121
+ division: 3
122
+ )
123
+ )
124
+ end
125
+ end
126
+
127
+ describe "#company" do
128
+ subject(:company) { client.company }
129
+
130
+ let(:mock_response) do
131
+ {
132
+ "ID" => 96_842,
133
+ "company_type" => 26,
134
+ "rating" => 8,
135
+ "name" => "Slippery When Wet",
136
+ "director" => 3_391_134,
137
+ "employees_hired" => 10,
138
+ "employees_capacity" => 10,
139
+ "daily_income" => 1_322_838,
140
+ "daily_customers" => 24_009,
141
+ "weekly_income" => 13_071_476,
142
+ "weekly_customers" => 239_180,
143
+ "days_old" => 950,
144
+ "employees" => {
145
+ "207875" => {
146
+ "name" => "wryte",
147
+ "position" => "Manager",
148
+ "days_in_company" => 236,
149
+ "last_action" => {
150
+ "status" => "Offline",
151
+ "timestamp" => 1_744_802_457,
152
+ "relative" => "3 days ago"
153
+ },
154
+ "status" => {
155
+ "description" => "Okay",
156
+ "details" => "",
157
+ "state" => "Okay",
158
+ "color" => "green",
159
+ "until" => 0
160
+ }
161
+ }
162
+ }
163
+ }
164
+ end
165
+
166
+ before do
167
+ endpoint = instance_double(TornRuby::Endpoints::Company)
168
+ allow(TornRuby::Endpoints::Company).to receive(:new).and_return(endpoint)
169
+ allow(endpoint).to receive(:fetch).and_return(mock_response)
170
+ end
171
+
172
+ it "returns a TornRuby::Company with expected attributes" do
173
+ expect(company).to be_a(TornRuby::Company)
174
+ .and have_attributes(
175
+ name: "Slippery When Wet",
176
+ director: 3_391_134,
177
+ employees_hired: 10,
178
+ daily_income: 1_322_838
179
+ )
180
+ end
181
+
182
+ it "has employee data accessible by string ID" do
183
+ employee = company.employees["207875"]
184
+ expect(employee).to include(
185
+ name: "wryte",
186
+ position: "Manager",
187
+ days_in_company: 236,
188
+ last_action: hash_including(
189
+ status: "Offline",
190
+ timestamp: 1_744_802_457,
191
+ relative: "3 days ago"
192
+ ),
193
+ status: hash_including(
194
+ description: "Okay",
195
+ state: "Okay",
196
+ color: "green"
197
+ )
198
+ )
199
+ end
200
+ end
201
+
202
+ describe "#market" do
203
+ subject(:market) { client.market }
204
+
205
+ let(:mock_response) do
206
+ {
207
+ "ID" => 96_842,
208
+ "company_type" => 26,
209
+ "rating" => 8,
210
+ "name" => "Slippery When Wet",
211
+ "director" => 3_391_134,
212
+ "employees_hired" => 10,
213
+ "employees_capacity" => 10,
214
+ "daily_income" => 1_322_838,
215
+ "daily_customers" => 24_009,
216
+ "weekly_income" => 13_071_476,
217
+ "weekly_customers" => 239_180,
218
+ "days_old" => 950
219
+ }
220
+ end
221
+
222
+ before do
223
+ market_endpoint = instance_double(TornRuby::Endpoints::Market)
224
+ allow(TornRuby::Endpoints::Market).to receive(:new).and_return(market_endpoint)
225
+ allow(market_endpoint).to receive(:fetch).and_return(mock_response)
226
+ end
227
+
228
+ it "returns a TornRuby::Company with expected attributes" do
229
+ expect(market).to be_a(TornRuby::Company)
230
+ .and have_attributes(
231
+ name: "Slippery When Wet",
232
+ director: 3_391_134,
233
+ employees_hired: 10,
234
+ daily_income: 1_322_838
235
+ )
236
+ end
237
+ end
238
+
239
+ describe "#torn" do
240
+ subject(:torn) { client.torn }
241
+
242
+ let(:mock_response) do
243
+ {
244
+ "bounties" => [
245
+ {
246
+ "target_id" => 2_556_147,
247
+ "target_name" => "salakau",
248
+ "target_level" => 36,
249
+ "lister_id" => 2_932_719,
250
+ "lister_name" => "Ridyard",
251
+ "reward" => 1_000_000,
252
+ "reason" => nil,
253
+ "quantity" => 1,
254
+ "is_anonymous" => false,
255
+ "valid_until" => 1_745_619_969
256
+ }
257
+ ]
258
+ }
259
+ end
260
+
261
+ before do
262
+ torn_endpoint = instance_double(TornRuby::Endpoints::Torn)
263
+ allow(TornRuby::Endpoints::Torn).to receive(:new).and_return(torn_endpoint)
264
+ allow(torn_endpoint).to receive(:fetch).and_return(mock_response)
265
+ end
266
+
267
+ it "returns a TornRuby::Torn with expected attributes" do
268
+ expect(torn).to be_a(TornRuby::Torn)
269
+ .and have_attributes(
270
+ bounties: match_array(
271
+ hash_including(
272
+ target_id: 2_556_147,
273
+ target_name: "salakau",
274
+ target_level: 36,
275
+ lister_id: 2_932_719,
276
+ lister_name: "Ridyard",
277
+ reward: 1_000_000,
278
+ reason: nil,
279
+ quantity: 1,
280
+ is_anonymous: false,
281
+ valid_until: 1_745_619_969
282
+ )
283
+ )
284
+ )
285
+ end
286
+ end
287
+
288
+ describe "#racing" do
289
+ subject(:racing) { client.racing }
290
+
291
+ let(:mock_response) do
292
+ {
293
+ "cars": [
294
+ {
295
+ "car_item_id": 77,
296
+ "car_item_name": "Tabata RM2",
297
+ "top_speed": 25,
298
+ "acceleration": 20,
299
+ "braking": 15,
300
+ "dirt": 15,
301
+ "handling": 20,
302
+ "safety": 20,
303
+ "tarmac": 20,
304
+ "class": "D"
305
+ }
306
+ ]
307
+ }
308
+ end
309
+
310
+ before do
311
+ racing_endpoint = instance_double(TornRuby::Endpoints::Racing)
312
+ allow(TornRuby::Endpoints::Racing).to receive(:new).and_return(racing_endpoint)
313
+ allow(racing_endpoint).to receive(:fetch).and_return(mock_response)
314
+ end
315
+
316
+ it "returns a TornRuby::Racing with expected attributes" do
317
+ expect(racing).to be_a(TornRuby::Racing)
318
+ .and have_attributes(
319
+ cars: match_array(
320
+ hash_including(
321
+ car_item_id: 77,
322
+ car_item_name: "Tabata RM2",
323
+ top_speed: 25,
324
+ acceleration: 20,
325
+ braking: 15,
326
+ dirt: 15,
327
+ handling: 20,
328
+ safety: 20,
329
+ tarmac: 20,
330
+ class: "D"
331
+ )
332
+ )
333
+ )
334
+ end
335
+ end
336
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+ require "torn_ruby/endpoints/user"
5
+
6
+ RSpec.describe TornRuby::Endpoints::Property do
7
+ let(:api_key) { "test_api_key" }
8
+ let(:property_endpoint) { described_class.new(api_key) }
9
+
10
+ describe "#handle_response" do
11
+ context "when the response is a success" do
12
+ let(:successful_response) do
13
+ instance_double(Net::HTTPSuccess, is_a?: true, code: "200", message: "OK", body: '{"property": "value"}')
14
+ end
15
+
16
+ it "parses the response body and returns the property" do
17
+ result = property_endpoint.send(:handle_response, successful_response)
18
+ expect(result).to eq("value")
19
+ end
20
+ end
21
+
22
+ context "when the response is not a success" do
23
+ let(:error_response) do
24
+ instance_double(Net::HTTPResponse, is_a?: false, code: "500", message: "Internal Server Error", body: "")
25
+ end
26
+
27
+ it "raises a TornRuby::Error with the appropriate message" do
28
+ expect do
29
+ property_endpoint.send(:handle_response, error_response)
30
+ end.to raise_error(TornRuby::Error, "API request failed: 500 Internal Server Error")
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe TornRuby::Property do
6
+ subject(:property) { described_class.new(data) }
7
+
8
+ let(:data) do
9
+ {
10
+ "owner_id" => 2_187_512,
11
+ "property_type" => 13,
12
+ "happy" => 5025,
13
+ "upkeep" => 100_000,
14
+ "upgrades" => [
15
+ "Superior interior",
16
+ "Large pool",
17
+ "Extra large vault"
18
+ ],
19
+ "staff" => [
20
+ "5x Maid service",
21
+ "3x Butler service"
22
+ ],
23
+ "rented" => {
24
+ "user_id" => 2_728_237,
25
+ "days_left" => 73,
26
+ "total_cost" => 81_000_000,
27
+ "cost_per_day" => 810_000
28
+ },
29
+ "users_living" => "2725863,2728237"
30
+ }
31
+ end
32
+
33
+ describe "#living_user_ids" do
34
+ it "returns an array of user IDs as integers" do
35
+ expect(property.living_user_ids).to eq([2_725_863, 2_728_237])
36
+ end
37
+ end
38
+
39
+ describe "#rented?" do
40
+ it "returns true when rented data is present" do
41
+ expect(property.rented?).to be true
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe TornRuby::Utils do
6
+ describe ".deep_symbolize_keys" do
7
+ it "symbolizes top-level keys" do
8
+ input = { "foo" => "bar" }
9
+ result = described_class.deep_symbolize_keys(input)
10
+ expect(result).to eq({ foo: "bar" })
11
+ end
12
+
13
+ it "recursively symbolizes nested hash keys" do
14
+ input = { "outer" => { "inner" => "value" } }
15
+ result = described_class.deep_symbolize_keys(input)
16
+ expect(result).to eq({ outer: { inner: "value" } })
17
+ end
18
+
19
+ it "symbolizes keys in hashes within arrays" do
20
+ input = { "list" => [{ "id" => 1 }, { "id" => 2 }] }
21
+
22
+ result = described_class.deep_symbolize_keys(input)
23
+ expect(result).to eq({ list: [{ id: 1 }, { id: 2 }] })
24
+ end
25
+
26
+ it "leaves non-hash, non-array values untouched" do
27
+ input = "string"
28
+ result = described_class.deep_symbolize_keys(input)
29
+ expect(result).to eq("string")
30
+ end
31
+ end
32
+ end
@@ -0,0 +1 @@
1
+ # frozen_string_literal: true
data/torn_ruby.gemspec ADDED
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/torn_ruby/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "torn_ruby"
7
+ spec.version = TornRuby::VERSION
8
+ spec.authors = ["Bram"]
9
+ spec.email = ["bramjanssen@hey.com"]
10
+
11
+ spec.summary = "A Ruby gem for interacting with the Torn City API, providing easy access to" \
12
+ "game data and functionality."
13
+ spec.description = "A Ruby gem that provides a convenient wrapper around the Torn City API." \
14
+ "Ideal for developers looking to integrate Torn City data into Ruby applications."
15
+
16
+ spec.homepage = "https://github.com/ibramsterdam/torn_ruby"
17
+
18
+ spec.license = "MIT"
19
+ spec.required_ruby_version = ">= 3.1.0"
20
+
21
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ gemspec = File.basename(__FILE__)
26
+ spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
27
+ ls.readlines("\x0", chomp: true).reject do |f|
28
+ (f == gemspec) ||
29
+ f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
30
+ f.end_with?(".gem") # Exclude .gem files
31
+ end
32
+ end
33
+ spec.bindir = "exe"
34
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
35
+ spec.require_paths = ["lib"]
36
+
37
+ # Uncomment to register a new dependency of your gem
38
+ # spec.add_dependency "example-gem", "~> 1.0"
39
+ spec.add_development_dependency "fiddle", "~> 1.1"
40
+ spec.add_development_dependency "pry", "~> 0.15"
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torn_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.beta
4
+ version: 1.0.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram
@@ -10,33 +10,33 @@ cert_chain: []
10
10
  date: 2025-04-19 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: pry
13
+ name: fiddle
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.15'
18
+ version: '1.1'
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.15'
25
+ version: '1.1'
26
26
  - !ruby/object:Gem::Dependency
27
- name: fiddle
27
+ name: pry
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '1.1'
32
+ version: '0.15'
33
33
  type: :development
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.1'
39
+ version: '0.15'
40
40
  description: A Ruby gem that provides a convenient wrapper around the Torn City API.Ideal
41
41
  for developers looking to integrate Torn City data into Ruby applications.
42
42
  email:
@@ -45,13 +45,19 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - ".github/workflows/main.yml"
49
+ - ".gitignore"
48
50
  - ".rspec"
49
51
  - ".rubocop.yml"
50
52
  - CHANGELOG.md
51
53
  - CODE_OF_CONDUCT.md
54
+ - Gemfile
55
+ - Gemfile.lock
52
56
  - LICENSE.txt
53
57
  - README.md
54
58
  - Rakefile
59
+ - bin/console
60
+ - bin/setup
55
61
  - lib/torn_ruby.rb
56
62
  - lib/torn_ruby/base.rb
57
63
  - lib/torn_ruby/client.rb
@@ -59,24 +65,49 @@ files:
59
65
  - lib/torn_ruby/endpoints/base.rb
60
66
  - lib/torn_ruby/endpoints/company.rb
61
67
  - lib/torn_ruby/endpoints/faction.rb
68
+ - lib/torn_ruby/endpoints/forum.rb
62
69
  - lib/torn_ruby/endpoints/market.rb
63
70
  - lib/torn_ruby/endpoints/property.rb
71
+ - lib/torn_ruby/endpoints/racing.rb
72
+ - lib/torn_ruby/endpoints/torn.rb
64
73
  - lib/torn_ruby/endpoints/user.rb
65
74
  - lib/torn_ruby/faction.rb
75
+ - lib/torn_ruby/forum.rb
66
76
  - lib/torn_ruby/market.rb
67
77
  - lib/torn_ruby/property.rb
78
+ - lib/torn_ruby/racing.rb
79
+ - lib/torn_ruby/torn.rb
68
80
  - lib/torn_ruby/user.rb
69
81
  - lib/torn_ruby/utils.rb
70
82
  - lib/torn_ruby/version.rb
71
83
  - sig/torn_ruby.rbs
84
+ - spec/spec_helper.rb
85
+ - spec/torn_ruby/base_spec.rb
86
+ - spec/torn_ruby/client_spec.rb
87
+ - spec/torn_ruby/company_spec.rb
88
+ - spec/torn_ruby/endpoints/company_spec.rb
89
+ - spec/torn_ruby/endpoints/faction_spec.rb
90
+ - spec/torn_ruby/endpoints/forum_spec.rb
91
+ - spec/torn_ruby/endpoints/market_spec.rb
92
+ - spec/torn_ruby/endpoints/property_spec.rb
93
+ - spec/torn_ruby/endpoints/racing_spec.rb
94
+ - spec/torn_ruby/endpoints/torn_spec.rb
95
+ - spec/torn_ruby/endpoints/user_spec.rb
96
+ - spec/torn_ruby/faction_spec.rb
97
+ - spec/torn_ruby/forum_spec.rb
98
+ - spec/torn_ruby/market_spec.rb
99
+ - spec/torn_ruby/property_spec.rb
100
+ - spec/torn_ruby/racing_spec.rb
101
+ - spec/torn_ruby/torn_spec.rb
102
+ - spec/torn_ruby/user_spec.rb
103
+ - spec/torn_ruby/utils_spec.rb
104
+ - spec/torn_ruby_spec.rb
105
+ - torn_ruby.gemspec
72
106
  homepage: https://github.com/ibramsterdam/torn_ruby
73
107
  licenses:
74
108
  - MIT
75
109
  metadata:
76
110
  allowed_push_host: https://rubygems.org
77
- homepage_uri: https://github.com/ibramsterdam/torn_ruby
78
- source_code_uri: https://github.com/ibramsterdam/torn_ruby
79
- changelog_uri: https://github.com/ibramsterdam/torn_ruby/blob/main/CHANGELOG.md
80
111
  rdoc_options: []
81
112
  require_paths:
82
113
  - lib