brawlhalla-api 0.2.0 → 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/README.md +66 -10
- data/bin/console +7 -2
- data/lib/brawlhalla/api/clan.rb +22 -0
- data/lib/brawlhalla/api/configuration.rb +18 -0
- data/lib/brawlhalla/api/doubles_ranking.rb +20 -0
- data/lib/brawlhalla/api/legend_ranking.rb +17 -0
- data/lib/brawlhalla/api/legend_stat.rb +25 -0
- data/lib/brawlhalla/api/player.rb +62 -0
- data/lib/brawlhalla/api/player_search.rb +14 -0
- data/lib/brawlhalla/api/ranking.rb +31 -0
- data/lib/brawlhalla/api/version.rb +1 -1
- data/lib/brawlhalla/api.rb +23 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 825dbd3cb6b62b94a63c9af8423dc8b036a618c5948b900080ccc6a1080195fe
|
4
|
+
data.tar.gz: 6cb7df461f6a2f96f73211fc1fd1dde428055f697319d20527baa60b1174850c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c55b1c15581b13fe99836672a41e4e6ad52838f41aecf64da05d6f4b9ea54d50c8880750916da0d6352ae6e2e0c83f22b8e4007b93b3683886dd42e8e903499
|
7
|
+
data.tar.gz: 85d551b32404f87360bbf0e88962f59b18c63168839ff53e3ca051af4f2f578996aea4324f7eea4b8df7f2ff5d5a7fd47f1ff965f0ba013d079ef88accc6c891
|
data/README.md
CHANGED
@@ -20,40 +20,96 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
+
Before using Brawlhalla::API you need to set it up with a valid API key.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
Brawlhalla::API.configure do |config|
|
27
|
+
config.api_key = 'YOUR_API_KEY_HERE'
|
28
|
+
config.debug = false # set to true for debugging
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
23
32
|
### Search By Steam ID
|
24
33
|
|
25
34
|
A Player can be looked up by steam ID. This returns the player’s name and brawlhalla_id.
|
26
35
|
|
27
|
-
_(A player’s steamid in format steamID64 (ex
|
36
|
+
_(A player’s steamid in format steamID64 (ex 76561198048321884).)_
|
28
37
|
|
29
38
|
```ruby
|
30
|
-
|
31
|
-
|
39
|
+
Brawlhalla::API.search('76561198048321884')
|
40
|
+
# => #<Brawlhalla::API::PlayerSearch:0x00007fa9db937a10 @brawlhalla_id=8817417, @name="Rikas">
|
32
41
|
```
|
33
42
|
|
34
43
|
### Players
|
35
44
|
|
36
45
|
#### Stats
|
37
46
|
|
38
|
-
This endpoint retrieves all stats about a player
|
47
|
+
This endpoint retrieves all stats about a player, given a `brawlhalla_id`. It will return a new
|
48
|
+
`Brawlhalla::API::Player` instance with all the stats as attributes.
|
39
49
|
|
40
50
|
```ruby
|
41
|
-
|
42
|
-
|
51
|
+
player = Brawlhalla::API::Player.find('8817417')
|
52
|
+
# => #<Brawlhalla::API::Player:0x00007f9642b71350 ...>
|
53
|
+
|
54
|
+
player.games # => 1839
|
55
|
+
player.brawlhalla_id # => 8817417
|
56
|
+
player.damagebomb # => 5516
|
57
|
+
player.kobomb # => 47
|
58
|
+
```
|
59
|
+
|
60
|
+
You also get individual stats (`Brawlhalla::API::LegendStat` instance) for each legend.
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
player.legend_stats.size # => 42
|
64
|
+
|
65
|
+
scarlet_stats = player.legend_stats.first
|
66
|
+
|
67
|
+
scarlet_stats.damagedealt # => 4481
|
68
|
+
scarlet_stats.damagegadgets # => 53
|
69
|
+
scarlet_stats.games # => 45
|
43
70
|
```
|
44
71
|
|
45
72
|
#### Ranked
|
46
73
|
|
47
|
-
This endpoint retrieves ranked data about a player.
|
74
|
+
This endpoint retrieves ranked data about a player. It receives one argument - the brawlhalla_id of
|
75
|
+
the player.
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
ranked = Ranking.find('8817417')
|
79
|
+
ranked.wins # => 172
|
80
|
+
ranked.region # => "EU"
|
81
|
+
ranked.rating # => 1394
|
82
|
+
ranked.peak_rating # => 1415
|
83
|
+
```
|
84
|
+
|
85
|
+
**Note**: You can also get the ranked data if you already have a `Brawlhalla::API::Player` instance
|
86
|
+
by calling the `#ranking` method. Keep in mind that this will also trigger an API call:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
player = Brawlhalla::API::Player.find('8817417')
|
90
|
+
player.ranking #=> All the ranked data like the one you get with `Brawlhalla::API::Ranked.find`
|
91
|
+
```
|
92
|
+
|
93
|
+
You can check each legend's rankings by calling the `#legend_rankings` method. This will return an
|
94
|
+
array of `Brawlhalla::API::LegendRanking` instances:
|
48
95
|
|
49
96
|
```ruby
|
50
|
-
|
51
|
-
|
97
|
+
ranked = Ranking.find('8817417')
|
98
|
+
legend_rankings = ranked.legend_rankings # Array of LegendRanking instances
|
99
|
+
legend_rankings.size # => 10
|
100
|
+
|
101
|
+
bodvar_ranking = legend_rankings.first
|
102
|
+
bodvar_ranking.games # => 31
|
103
|
+
bodvar_ranking.peak_rating # => 1200
|
104
|
+
bodvar.rating # => 1199
|
105
|
+
bodvar_ranking.tier # => "Silver 2"
|
52
106
|
```
|
53
107
|
|
54
108
|
## Development
|
55
109
|
|
56
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run
|
110
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run
|
111
|
+
the tests. You can also run `bin/console` for an interactive prompt that will allow you to
|
112
|
+
experiment.
|
57
113
|
|
58
114
|
## Contributing
|
59
115
|
|
data/bin/console
CHANGED
@@ -8,8 +8,13 @@ require 'brawlhalla/api'
|
|
8
8
|
require 'dotenv'
|
9
9
|
Dotenv.load
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
Brawlhalla::API.configure do |config|
|
12
|
+
config.api_key = ENV['API_KEY']
|
13
|
+
config.debug = false
|
14
|
+
end
|
15
|
+
|
16
|
+
# So we can use Player, Clan, Client, etc. without namespacing every time.
|
17
|
+
self.send(:include, Brawlhalla::API)
|
13
18
|
|
14
19
|
require 'pry'
|
15
20
|
Pry.start
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brawlhalla
|
4
|
+
module API
|
5
|
+
class Clan
|
6
|
+
ATTRIBUTES = %i[
|
7
|
+
clan_name clan_id clan_xp personal_xp
|
8
|
+
]
|
9
|
+
|
10
|
+
attr_accessor *ATTRIBUTES
|
11
|
+
alias name clan_name
|
12
|
+
alias id clan_id
|
13
|
+
alias xp clan_xp
|
14
|
+
|
15
|
+
def initialize(json)
|
16
|
+
ATTRIBUTES.each do |attr|
|
17
|
+
send("#{attr}=", json[attr])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brawlhalla
|
4
|
+
module API
|
5
|
+
class DoublesRanking
|
6
|
+
ATTRIBUTES = %i[
|
7
|
+
brawlhalla_id_one brawlhalla_id_two rating peak_rating tier wins games teamname region
|
8
|
+
global_rank
|
9
|
+
]
|
10
|
+
|
11
|
+
attr_accessor *ATTRIBUTES
|
12
|
+
|
13
|
+
def initialize(json)
|
14
|
+
ATTRIBUTES.each do |attr|
|
15
|
+
send("#{attr}=", json[attr])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brawlhalla
|
4
|
+
module API
|
5
|
+
class LegendRanking
|
6
|
+
ATTRIBUTES = %i[legend_id legend_name_key rating peak_rating tier wins games]
|
7
|
+
|
8
|
+
attr_accessor *ATTRIBUTES
|
9
|
+
|
10
|
+
def initialize(json)
|
11
|
+
ATTRIBUTES.each do |attr|
|
12
|
+
send("#{attr}=", json[attr])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brawlhalla
|
4
|
+
module API
|
5
|
+
class LegendStat
|
6
|
+
ATTRIBUTES = %i[
|
7
|
+
legend_id legend_name_key damagedealt damagetaken kos falls suicides teamkos matchtime games
|
8
|
+
wins damageunarmed damagethrownitem damageweaponone damageweapontwo damagegadgets kounarmed
|
9
|
+
kothrownitem koweaponone koweapontwo kogadgets timeheldweaponone timeheldweapontwo xp level
|
10
|
+
xp_percentage
|
11
|
+
]
|
12
|
+
|
13
|
+
attr_accessor *ATTRIBUTES
|
14
|
+
|
15
|
+
def initialize(json)
|
16
|
+
ATTRIBUTES.each do |attr|
|
17
|
+
value = json[attr]
|
18
|
+
value = value.to_i if attr.to_s.start_with?('damage')
|
19
|
+
|
20
|
+
send("#{attr}=", value)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'brawlhalla/api/legend_stat'
|
4
|
+
require 'brawlhalla/api/clan'
|
5
|
+
require 'brawlhalla/api/ranking'
|
6
|
+
|
7
|
+
module Brawlhalla
|
8
|
+
module API
|
9
|
+
class Player
|
10
|
+
ATTRIBUTES = %i[
|
11
|
+
brawlhalla_id name xp level xp_percentage games wins damagebomb damagespikeball
|
12
|
+
damagesidekick hitsnowball kobomb komine kospikeball kosnowball
|
13
|
+
]
|
14
|
+
|
15
|
+
attr_accessor *ATTRIBUTES
|
16
|
+
attr_reader :legend_stats, :clan
|
17
|
+
|
18
|
+
def self.find(brawlhalla_id)
|
19
|
+
stats_json = API.client.stats(brawlhalla_id)
|
20
|
+
|
21
|
+
new(stats_json)
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(json)
|
25
|
+
ATTRIBUTES.each do |attr|
|
26
|
+
value = json[attr]
|
27
|
+
value = value.to_i if attr.to_s.start_with?('damage')
|
28
|
+
|
29
|
+
send("#{attr}=", value)
|
30
|
+
end
|
31
|
+
|
32
|
+
initialize_clan(json)
|
33
|
+
initialize_legends(json)
|
34
|
+
end
|
35
|
+
|
36
|
+
def ranking
|
37
|
+
@ranking ||= Ranking.find(brawlhalla_id)
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
# For some odd reason the damage values come as strings instead of integers.
|
43
|
+
def sanitalize_damage_values
|
44
|
+
@damagebomb = @damagebomb.to_i
|
45
|
+
@damagesidekick = @damagesidekick.to_i
|
46
|
+
@damagespikeball = @damagespikeball.to_i
|
47
|
+
end
|
48
|
+
|
49
|
+
def initialize_clan(json)
|
50
|
+
return unless json[:clan]
|
51
|
+
|
52
|
+
@clan = Clan.new(json[:clan])
|
53
|
+
end
|
54
|
+
|
55
|
+
def initialize_legends(json)
|
56
|
+
return unless json[:legends]
|
57
|
+
|
58
|
+
@legend_stats = json[:legends].map { |legend_json| LegendStat.new(legend_json) }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'brawlhalla/api/legend_ranking'
|
4
|
+
require 'brawlhalla/api/doubles_ranking'
|
5
|
+
|
6
|
+
module Brawlhalla
|
7
|
+
module API
|
8
|
+
class Ranking
|
9
|
+
ATTRIBUTES = %i[
|
10
|
+
name brawlhalla_id rating peak_rating tier wins games region global_rank region_rank
|
11
|
+
]
|
12
|
+
|
13
|
+
attr_accessor *ATTRIBUTES
|
14
|
+
attr_reader :legend_rankings, :doubles_rankings
|
15
|
+
|
16
|
+
def self.find(brawlhalla_id)
|
17
|
+
ranking_json = API.client.ranked(brawlhalla_id)
|
18
|
+
new(ranking_json)
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(json)
|
22
|
+
ATTRIBUTES.each do |attr|
|
23
|
+
send("#{attr}=", json[attr])
|
24
|
+
end
|
25
|
+
|
26
|
+
@legend_rankings = json[:legends].map { |legend_json| LegendRanking.new(legend_json) }
|
27
|
+
@doubles_rankings = json[:"2v2"].map { |doubles_json| DoublesRanking.new(doubles_json) }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/brawlhalla/api.rb
CHANGED
@@ -1,12 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'brawlhalla/api/version'
|
4
|
+
require 'brawlhalla/api/configuration'
|
4
5
|
require 'brawlhalla/api/client'
|
6
|
+
require 'brawlhalla/api/player'
|
7
|
+
require 'brawlhalla/api/player_search'
|
8
|
+
|
5
9
|
require 'faraday'
|
6
10
|
require 'faraday_middleware'
|
7
11
|
require 'addressable'
|
8
12
|
|
9
13
|
module Brawlhalla
|
10
14
|
module API
|
15
|
+
module_function
|
16
|
+
|
17
|
+
def configuration
|
18
|
+
@configuration ||= Configuration.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def client
|
22
|
+
@client = Client.new(configuration.api_key, debug: configuration.debug?)
|
23
|
+
end
|
24
|
+
|
25
|
+
def configure
|
26
|
+
yield(configuration)
|
27
|
+
end
|
28
|
+
|
29
|
+
def search(steam_id)
|
30
|
+
search_json = client.search(steam_id)
|
31
|
+
|
32
|
+
PlayerSearch.new(search_json)
|
33
|
+
end
|
11
34
|
end
|
12
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brawlhalla-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rikas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -198,7 +198,15 @@ files:
|
|
198
198
|
- bin/setup
|
199
199
|
- brawlhalla-api.gemspec
|
200
200
|
- lib/brawlhalla/api.rb
|
201
|
+
- lib/brawlhalla/api/clan.rb
|
201
202
|
- lib/brawlhalla/api/client.rb
|
203
|
+
- lib/brawlhalla/api/configuration.rb
|
204
|
+
- lib/brawlhalla/api/doubles_ranking.rb
|
205
|
+
- lib/brawlhalla/api/legend_ranking.rb
|
206
|
+
- lib/brawlhalla/api/legend_stat.rb
|
207
|
+
- lib/brawlhalla/api/player.rb
|
208
|
+
- lib/brawlhalla/api/player_search.rb
|
209
|
+
- lib/brawlhalla/api/ranking.rb
|
202
210
|
- lib/brawlhalla/api/version.rb
|
203
211
|
homepage: https://github.com/rikas/brawlhalla-api
|
204
212
|
licenses:
|