All Projects → vergilet → open_dota_api

vergilet / open_dota_api

Licence: MIT, MIT licenses found Licenses found MIT LICENSE MIT MIT-LICENSE
Ruby client for Dota 2 from OpenDotaAPI

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to open dota api

dotaUpdatesBot
A telegram bot for dota2 updates
Stars: ✭ 24 (+26.32%)
Mutual labels:  dota, dota2-api
glimmer-dsl-swt
Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)
Stars: ✭ 53 (+178.95%)
Mutual labels:  ruby-library
Jekyll Toc
Jekyll plugin which generates a table of contents.
Stars: ✭ 211 (+1010.53%)
Mutual labels:  gem
glimmer-dsl-opal
Glimmer DSL for Opal (Pure-Ruby Web GUI and Auto-Webifier of Desktop Apps)
Stars: ✭ 22 (+15.79%)
Mutual labels:  ruby-library
Localer
Automatic detecting missing I18n translations tool.
Stars: ✭ 219 (+1052.63%)
Mutual labels:  gem
activerecord-crate-adapter
Ruby on Rails ActiveRecord adapter for CrateDB
Stars: ✭ 27 (+42.11%)
Mutual labels:  ruby-library
Squid
A Ruby library to plot charts in PDF files
Stars: ✭ 205 (+978.95%)
Mutual labels:  gem
Ransack
Object-based searching.
Stars: ✭ 5,020 (+26321.05%)
Mutual labels:  ruby-library
glimmer-dsl-tk
Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library)
Stars: ✭ 26 (+36.84%)
Mutual labels:  ruby-library
Forest Rails
🌱 Rails Liana for Forest Admin
Stars: ✭ 247 (+1200%)
Mutual labels:  gem
Api Fuzzer
API Fuzzer which allows to fuzz request attributes using common pentesting techniques and lists vulnerabilities
Stars: ✭ 238 (+1152.63%)
Mutual labels:  gem
Localeapp
Send and retrieve your ruby i18n localizations to the Locale translation service
Stars: ✭ 225 (+1084.21%)
Mutual labels:  gem
iyzipay-ruby
iyzipay api ruby client
Stars: ✭ 37 (+94.74%)
Mutual labels:  ruby-library
Bootsnap
Boot large Ruby/Rails apps faster
Stars: ✭ 2,480 (+12952.63%)
Mutual labels:  gem
iosdevices
iOS device model translation from Apple device types.
Stars: ✭ 14 (-26.32%)
Mutual labels:  ruby-library
Gemsurance
Gem vulnerability checker using rubysec/ruby-advisory-db
Stars: ✭ 207 (+989.47%)
Mutual labels:  gem
Victor
Ruby SVG Image Builder
Stars: ✭ 237 (+1147.37%)
Mutual labels:  gem
The-Ruby-Workshop
A New, Interactive Approach to Learning Ruby
Stars: ✭ 26 (+36.84%)
Mutual labels:  ruby-library
crate ruby
A Ruby client library for CrateDB.
Stars: ✭ 31 (+63.16%)
Mutual labels:  ruby-library
minimal-ruby-project
A minimal Ruby project template
Stars: ✭ 40 (+110.53%)
Mutual labels:  ruby-library

💎 Unofficial Ruby Gem for OpenDotaAPI. This API provides Dota 2 related data.

Gem Version Build Status Code Climate Test Coverage

⚠️ Please keep request rate to approximately 3/s.

Installation

If you use Rubygems you can type:

gem install open_dota_api

or add this line to your application's Gemfile:

gem 'open_dota_api'

then execute:

$ bundle

Using

To use OpenDotaApi you can:

require 'open_dota_api'

Use available methods to gather needed data:

# Leagues listing
OpenDotaApi.leagues

# Teams listing
OpenDotaApi.teams

# Match details
OpenDotaApi.matches(match_id)

# Heroes listing
OpenDotaApi.heroes

# Pro players listing
OpenDotaApi.pro_players

# Explorer output (limited)
OpenDotaApi.explorer(league_id)

# Player (account) details
OpenDotaApi.players(account_id)

Premium Tier (update)

Beginning 2018-04-22, the OpenDota API is limited to 50,000 free calls per month and 60 requests/minute.

We offer a Premium Tier with unlimited API calls and higher rate limits. Check out the API page to learn more.

Please follow the link to Get the KEY.

Requests Limit:

To check the request limit for Free Tier:

  OpenDotaApi.limits 

Output:

  {
    per_min: "0",         # request left for per minute
    per_month: "49878"    # request left for per month
  } 

Using the API_KEY

After you get you personal key you have two options:

  1. Set api_key globally to all your request. For Rails application you can create the initializer:

    # config/initializers/open_dota_api.rb
    
    OpenDotaApi.api_key = [YOUR_KEY_HERE]
  2. Or you can set api_key directly in the request:

    OpenDotaApi.leagues(api_key: [YOUR_KEY_HERE])
    
    OpenDotaApi.teams(api_key: [YOUR_KEY_HERE])
    
    OpenDotaApi.matches(match_id, api_key: [YOUR_KEY_HERE])
    
    OpenDotaApi.heroes(api_key: [YOUR_KEY_HERE])
    
    OpenDotaApi.pro_players(api_key: [YOUR_KEY_HERE])
    
    OpenDotaApi.explorer(league_id, api_key: [YOUR_KEY_HERE])
    
    OpenDotaApi.players(account_id, api_key: [YOUR_KEY_HERE])

Enjoy!

Endpoints

🔷 Leagues

API Method: leagues
leagues = OpenDotaApi.leagues
leagues                # array
league = leagues.first
league.class           # OpenDotaApi::Leagues
league.league_id       # Number, league ID
league.ticket          # String, ticket identifier
league.banner          # String, banner identifier
league.tier            # String, premiere, pro, amateur
league.name            # String, league name

🔷 Teams

API Method: teams
teams = OpenDotaApi.teams
teams                  # array
team = teams.first
team.class             # OpenDotaApi::Team
team.team_id
team.rating
team.wins
team.losses
team.last_match_time
team.name
team.tag

🔷 Players

API Method: players
account_id = 65366604        # number, is required
player = OpenDotaApi.players(account_id)
player.class                 # OpenDotaApi::Player
player.account_id
player.mmr_estimate
player.plus
player.contributor?
player.steam_id
player.avatar
player.avatar_medium
player.avatar_full
player.profile_url
player.persona_name
player.last_login
player.cheese
player.loc_country_code
player.name
player.tracked_until
player.rank_tier
player.competitive_rank
player.solo_competitive_rank
player.leaderboard_rank

🔷 Matches

API Method: matches
match_id = 0000000001        # number, is required
match = OpenDotaApi.matches(match_id)
match.class                  # OpenDotaApi::Match
match.match_id
match.start_time
match.duration
match.series_id
match.series_type
match.radiant_team_id
match.dire_team_id
match.match_seq_num
match.league_id
match.first_blood_time
match.winner
match.cluster
match.replay_salt
match.cluster
match.replay_url
match.radiant_score         # Integer
match.dire_score            # Integer
match.players               # array of players (type OpenDotaApi::Matches::Player)
🔹 Player
players = match.players 
player = players.first
player.class                # OpenDotaApi::Matches::Player
player.match_id             # related to OpenDotaApi::Match
player.player_slot
player.account_id
player.assists
player.camps_stacked
player.deaths
player.denies
player.gold_per_min
player.hero_id              # related to OpenDotaApi::Hero
player.kills
player.obs_placed
player.sen_placed
player.rune_pickups
player.stuns
player.xp_per_min
player.name
player.side
player.kda
player.tower_kills
player.roshan_kills
player.hero_healing
player.last_hits
player.firstblood_claimed
player.hero_damage
player.teamfight_participation

🔷 Heroes

API Method: heroes
heroes = OpenDotaApi.heroes
heroes.class              # array        
hero = heroes.first
hero.class                # OpenDotaApi::Hero    
hero.id
hero.name
hero.localized_name       # "Anti-mage"
hero.primary_attr
hero.attack_type
hero.roles                # array of roles
hero.legs

🔷 Pro Players

API Method: proPlayers
pro_players = OpenDotaApi.pro_players
pro_players.class              # array        
pro_player = pro_players.first
pro_player.class               # OpenDotaApi::ProPlayer    
pro_player.account_id
pro_player.steam_id
pro_player.avatar
pro_player.avatar_medium
pro_player.avatar_full
pro_player.profile_url
pro_player.persona_name
pro_player.last_login
pro_player.full_history_time
pro_player.cheese
pro_player.fh_unavailable
pro_player.loc_country_code
pro_player.last_match_time
pro_player.name
pro_player.country_code
pro_player.fantasy_role
pro_player.team_id
pro_player.team_name
pro_player.team_tag
pro_player.locked?
pro_player.pro?
pro_player.locked_until

🔷 Explorer

API Method: explorer
explorer = OpenDotaApi.explorer(league_id)
explorer.class                  # OpenDotaApi::Explorer       
explorer.league_matches_ids     # Array of matches IDs for current league 

...

That's all for now.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/vergilet/open_dota_api

Feel free to contribute:

  1. Fork it (https://github.com/vergilet/open_dota_api/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

The gem is available as open source under the terms of the MIT License.

Copyright © 2017 Yaro.

GitHub license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].