dota 0.0.1 → 0.0.2
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 +49 -3
- data/lib/dota.rb +1 -0
- data/lib/dota/api/hero.rb +132 -0
- data/lib/dota/api/item.rb +4 -0
- data/lib/dota/api/match/player.rb +4 -0
- data/lib/dota/version.rb +1 -1
- data/spec/dota/api/hero_spec.rb +19 -0
- data/spec/dota/api/item_spec.rb +4 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13969c4e3573f338e6b8b08a86f69c8c2809ff8a
|
4
|
+
data.tar.gz: 2d53b80d2477534ebfd99822000a43cf38761da4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0810e4563f659467a8c7392c66f1cd5f17fc71f9ef67b8424522ec3b77abd23e5f75759fe5ab68ad04015629c57ed47158cf09dcdc59701fc09c1bd07e201b0
|
7
|
+
data.tar.gz: 1a0de2076dbe4f5cce57d52ee1a3dc2dc88f6ee19c3a12baa1e1bb697ed671ff370ed9cd02a00c8e7cf5548f2595bfcd5ad1a2f3931eb1cd7ea189a272d364e0
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Dota
|
2
2
|
|
3
|
-
|
3
|
+
Dota is a Ruby client for the [Dota 2 WebAPI](https://wiki.teamfortress.com/wiki/WebAPI#Dota_2). It provides an easy way to access matches, players, heroes, items, and other public Dota 2 objects in an opinionated manner.
|
4
|
+
|
5
|
+
This gem is in alpha, keep that in mind when upgrading. Documentation is also still lacking. In the meantime, you can do `SomeClass.instance_methods(false)` to see what methods are exposed. See [Core Classes](#core-classes) for more info.
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -22,13 +24,57 @@ Or install it yourself as:
|
|
22
24
|
|
23
25
|
```ruby
|
24
26
|
Dota.configure do |config|
|
25
|
-
config.api_key = "
|
27
|
+
config.api_key = "YOUR_STEAM_API_KEY"
|
26
28
|
end
|
29
|
+
|
30
|
+
api = Dota.api
|
31
|
+
```
|
32
|
+
|
33
|
+
Get your Steam API key [here](http://steamcommunity.com/dev/apikey). What follows is a list of API methods supported by the gem:
|
34
|
+
|
35
|
+
#### Get a single match
|
36
|
+
|
37
|
+
Returns an instance of `Dota::API::Match`.
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
api.match(MATCH_ID)
|
41
|
+
```
|
42
|
+
|
43
|
+
## API Objects
|
44
|
+
|
45
|
+
Only for reference. You won't need to instantiate on these classes directly and it's not advisable to do so as the API might change anytime. Using `Dota.api` alone should be enough in most cases.
|
46
|
+
|
47
|
+
### Dota::API::Item
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
item.id # => 114
|
51
|
+
item.name # => "Heart of Tarrasque"
|
52
|
+
item.image_url # => "http://cdn.dota2.com/apps/dota2/images/items/heart_lg.png"
|
53
|
+
```
|
54
|
+
|
55
|
+
### Dota::API::Hero
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
hero.id # => 43
|
59
|
+
hero.name # => "Death Prophet"
|
60
|
+
hero.image_url # => "http://cdn.dota2.com/apps/dota2/images/heroes/death_prophet_full.png"
|
61
|
+
```
|
62
|
+
|
63
|
+
### Dota::API::Match
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
XXX: TODO
|
67
|
+
```
|
68
|
+
|
69
|
+
###Dota::API::Match::Player
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
XXX: TODO
|
27
73
|
```
|
28
74
|
|
29
75
|
## Contributing
|
30
76
|
|
31
|
-
1. Fork
|
77
|
+
1. [Fork It](https://github.com/vinnicc/dota/fork)
|
32
78
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
33
79
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
34
80
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/dota.rb
CHANGED
@@ -0,0 +1,132 @@
|
|
1
|
+
module Dota
|
2
|
+
module API
|
3
|
+
class Hero
|
4
|
+
MAPPING = {
|
5
|
+
1 => ["antimage", "Anti-Mage"],
|
6
|
+
2 => ["axe", "Axe"],
|
7
|
+
3 => ["bane", "Bane"],
|
8
|
+
4 => ["bloodseeker", "Bloodseeker"],
|
9
|
+
5 => ["crystal_maiden", "Crystal Maiden"],
|
10
|
+
6 => ["drow_ranger", "Drow Ranger"],
|
11
|
+
7 => ["earthshaker", "Earthshaker"],
|
12
|
+
8 => ["juggernaut", "Juggernaut"],
|
13
|
+
9 => ["mirana", "Mirana"],
|
14
|
+
10 => ["morphling", "Morphling"],
|
15
|
+
11 => ["nevermore", "Shadow Fiend"],
|
16
|
+
12 => ["phantom_lancer", "Phantom Lancer"],
|
17
|
+
13 => ["puck", "Puck"],
|
18
|
+
14 => ["pudge", "Pudge"],
|
19
|
+
15 => ["razor", "Razor"],
|
20
|
+
16 => ["sand_king", "Sand King"],
|
21
|
+
17 => ["storm_spirit", "Storm Spirit"],
|
22
|
+
18 => ["sven", "Sven"],
|
23
|
+
19 => ["tiny", "Tiny"],
|
24
|
+
20 => ["vengefulspirit", "Vengeful Spirit"],
|
25
|
+
21 => ["windrunner", "Windranger"],
|
26
|
+
22 => ["zuus", "Zeus"],
|
27
|
+
23 => ["kunkka", "Kunkka"],
|
28
|
+
25 => ["lina", "Lina"],
|
29
|
+
26 => ["lion", "Lion"],
|
30
|
+
27 => ["shadow_shaman", "Shadow Shaman"],
|
31
|
+
28 => ["slardar", "Slardar"],
|
32
|
+
29 => ["tidehunter", "Tidehunter"],
|
33
|
+
30 => ["witch_doctor", "Witch Doctor"],
|
34
|
+
31 => ["lich", "Lich"],
|
35
|
+
32 => ["riki", "Riki"],
|
36
|
+
33 => ["enigma", "Enigma"],
|
37
|
+
34 => ["tinker", "Tinker"],
|
38
|
+
35 => ["sniper", "Sniper"],
|
39
|
+
36 => ["necrolyte", "Necrophos"],
|
40
|
+
37 => ["warlock", "Warlock"],
|
41
|
+
38 => ["beastmaster", "Beastmaster"],
|
42
|
+
39 => ["queenofpain", "Queen of Pain"],
|
43
|
+
40 => ["venomancer", "Venomancer"],
|
44
|
+
41 => ["faceless_void", "Faceless Void"],
|
45
|
+
42 => ["skeleton_king", "Wraith King"],
|
46
|
+
43 => ["death_prophet", "Death Prophet"],
|
47
|
+
44 => ["phantom_assassin", "Phantom Assassin"],
|
48
|
+
45 => ["pugna", "Pugna"],
|
49
|
+
46 => ["templar_assassin", "Templar Assassin"],
|
50
|
+
47 => ["viper", "Viper"],
|
51
|
+
48 => ["luna", "Luna"],
|
52
|
+
49 => ["dragon_knight", "Dragon Knight"],
|
53
|
+
50 => ["dazzle", "Dazzle"],
|
54
|
+
51 => ["rattletrap", "Clockwerk"],
|
55
|
+
52 => ["leshrac", "Leshrac"],
|
56
|
+
53 => ["furion", "Nature's Prophet"],
|
57
|
+
54 => ["life_stealer", "Lifestealer"],
|
58
|
+
55 => ["dark_seer", "Dark Seer"],
|
59
|
+
56 => ["clinkz", "Clinkz"],
|
60
|
+
57 => ["omniknight", "Omniknight"],
|
61
|
+
58 => ["enchantress", "Enchantress"],
|
62
|
+
59 => ["huskar", "Huskar"],
|
63
|
+
60 => ["night_stalker", "Night Stalker"],
|
64
|
+
61 => ["broodmother", "Broodmother"],
|
65
|
+
62 => ["bounty_hunter", "Bounty Hunter"],
|
66
|
+
63 => ["weaver", "Weaver"],
|
67
|
+
64 => ["jakiro", "Jakiro"],
|
68
|
+
65 => ["batrider", "Batrider"],
|
69
|
+
66 => ["chen", "Chen"],
|
70
|
+
67 => ["spectre", "Spectre"],
|
71
|
+
68 => ["ancient_apparition", "Ancient Apparition"],
|
72
|
+
69 => ["doom_bringer", "Doom"],
|
73
|
+
70 => ["ursa", "Ursa"],
|
74
|
+
71 => ["spirit_breaker", "Spirit Breaker"],
|
75
|
+
72 => ["gyrocopter", "Gyrocopter"],
|
76
|
+
73 => ["alchemist", "Alchemist"],
|
77
|
+
74 => ["invoker", "Invoker"],
|
78
|
+
75 => ["silencer", "Silencer"],
|
79
|
+
76 => ["obsidian_destroyer", "Outworld Devourer"],
|
80
|
+
77 => ["lycan", "Lycan"],
|
81
|
+
78 => ["brewmaster", "Brewmaster"],
|
82
|
+
79 => ["shadow_demon", "Shadow Demon"],
|
83
|
+
80 => ["lone_druid", "Lone Druid"],
|
84
|
+
81 => ["chaos_knight", "Chaos Knight"],
|
85
|
+
82 => ["meepo", "Meepo"],
|
86
|
+
83 => ["treant", "Treant Protector"],
|
87
|
+
84 => ["ogre_magi", "Ogre Magi"],
|
88
|
+
85 => ["undying", "Undying"],
|
89
|
+
86 => ["rubick", "Rubick"],
|
90
|
+
87 => ["disruptor", "Disruptor"],
|
91
|
+
88 => ["nyx_assassin", "Nyx Assassin"],
|
92
|
+
89 => ["naga_siren", "Naga Siren"],
|
93
|
+
90 => ["keeper_of_the_light", "Keeper of the Light"],
|
94
|
+
91 => ["wisp", "Io"],
|
95
|
+
92 => ["visage", "Visage"],
|
96
|
+
93 => ["slark", "Slark"],
|
97
|
+
94 => ["medusa", "Medusa"],
|
98
|
+
95 => ["troll_warlord", "Troll Warlord"],
|
99
|
+
96 => ["centaur", "Centaur Warrunner"],
|
100
|
+
97 => ["magnataur", "Magnus"],
|
101
|
+
98 => ["shredder", "Timbersaw"],
|
102
|
+
99 => ["bristleback", "Bristleback"],
|
103
|
+
100 => ["tusk", "Tusk"],
|
104
|
+
101 => ["skywrath_mage", "Skywrath Mage"],
|
105
|
+
102 => ["abaddon", "Abaddon"],
|
106
|
+
103 => ["elder_titan", "Elder Titan"],
|
107
|
+
104 => ["legion_commander", "Legion Commander"],
|
108
|
+
105 => ["techies", "Techies"],
|
109
|
+
106 => ["ember_spirit", "Ember Spirit"],
|
110
|
+
107 => ["earth_spirit", "Earth Spirit"],
|
111
|
+
109 => ["terrorblade", "Terrorblade"],
|
112
|
+
110 => ["phoenix", "Phoenix"]
|
113
|
+
}.freeze
|
114
|
+
|
115
|
+
attr_reader :id, :name
|
116
|
+
|
117
|
+
def initialize(id)
|
118
|
+
@id = id
|
119
|
+
@internal_name = MAPPING[id][0]
|
120
|
+
@name = MAPPING[id][1]
|
121
|
+
end
|
122
|
+
|
123
|
+
def image_url(type = :full)
|
124
|
+
"http://cdn.dota2.com/apps/dota2/images/heroes/#{internal_name}_#{type}.png"
|
125
|
+
end
|
126
|
+
|
127
|
+
private
|
128
|
+
|
129
|
+
attr_reader :internal_name
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
data/lib/dota/api/item.rb
CHANGED
data/lib/dota/version.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
describe Dota::API::Hero do
|
2
|
+
let(:item) do
|
3
|
+
VCR.use_cassette("GetMatchDetails") do
|
4
|
+
test_client.match(sample_match_id).players.first.hero
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "#id" do
|
9
|
+
expect(item.id).to eq 69
|
10
|
+
end
|
11
|
+
|
12
|
+
specify "#name" do
|
13
|
+
expect(item.name).to eq "Doom"
|
14
|
+
end
|
15
|
+
|
16
|
+
specify "#image_url" do
|
17
|
+
expect(item.image_url).to eq "http://cdn.dota2.com/apps/dota2/images/heroes/doom_bringer_full.png"
|
18
|
+
end
|
19
|
+
end
|
data/spec/dota/api/item_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dota
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vinni Carlo Caños
|
@@ -153,12 +153,14 @@ files:
|
|
153
153
|
- dota.gemspec
|
154
154
|
- lib/dota.rb
|
155
155
|
- lib/dota/api/client.rb
|
156
|
+
- lib/dota/api/hero.rb
|
156
157
|
- lib/dota/api/item.rb
|
157
158
|
- lib/dota/api/match.rb
|
158
159
|
- lib/dota/api/match/player.rb
|
159
160
|
- lib/dota/configuration.rb
|
160
161
|
- lib/dota/utils/inspect.rb
|
161
162
|
- lib/dota/version.rb
|
163
|
+
- spec/dota/api/hero_spec.rb
|
162
164
|
- spec/dota/api/item_spec.rb
|
163
165
|
- spec/dota/api/match/player_spec.rb
|
164
166
|
- spec/dota/api/match_spec.rb
|
@@ -191,6 +193,7 @@ signing_key:
|
|
191
193
|
specification_version: 4
|
192
194
|
summary: Ruby client for the Dota 2 WebAPI
|
193
195
|
test_files:
|
196
|
+
- spec/dota/api/hero_spec.rb
|
194
197
|
- spec/dota/api/item_spec.rb
|
195
198
|
- spec/dota/api/match/player_spec.rb
|
196
199
|
- spec/dota/api/match_spec.rb
|