blizzard_api 0.2.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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.gitlab-ci.yml +28 -0
  4. data/.rubocop.yml +13 -0
  5. data/.rubocop_todo.yml +7 -0
  6. data/.travis.yml +7 -0
  7. data/CHANGELOG.md +4 -0
  8. data/Gemfile +8 -0
  9. data/Gemfile.lock +44 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +208 -0
  12. data/Rakefile +12 -0
  13. data/bin/console +14 -0
  14. data/bin/setup +8 -0
  15. data/blizzard_api.gemspec +42 -0
  16. data/lib/blizzard_api.rb +14 -0
  17. data/lib/blizzard_api/configuration.rb +82 -0
  18. data/lib/blizzard_api/diablo.rb +76 -0
  19. data/lib/blizzard_api/diablo/community/act.rb +35 -0
  20. data/lib/blizzard_api/diablo/community/artisan.rb +38 -0
  21. data/lib/blizzard_api/diablo/community/character.rb +38 -0
  22. data/lib/blizzard_api/diablo/community/follower.rb +25 -0
  23. data/lib/blizzard_api/diablo/community/item.rb +26 -0
  24. data/lib/blizzard_api/diablo/community/item_type.rb +35 -0
  25. data/lib/blizzard_api/diablo/community/profile.rb +77 -0
  26. data/lib/blizzard_api/diablo/game_data/era.rb +21 -0
  27. data/lib/blizzard_api/diablo/game_data/generic_data_endpoint.rb +58 -0
  28. data/lib/blizzard_api/diablo/game_data/season.rb +21 -0
  29. data/lib/blizzard_api/diablo/request.rb +15 -0
  30. data/lib/blizzard_api/exception.rb +12 -0
  31. data/lib/blizzard_api/request.rb +182 -0
  32. data/lib/blizzard_api/starcraft.rb +40 -0
  33. data/lib/blizzard_api/starcraft/community/account.rb +23 -0
  34. data/lib/blizzard_api/starcraft/community/ladder.rb +34 -0
  35. data/lib/blizzard_api/starcraft/community/profile.rb +76 -0
  36. data/lib/blizzard_api/starcraft/game_data/league.rb +27 -0
  37. data/lib/blizzard_api/starcraft/request.rb +36 -0
  38. data/lib/blizzard_api/version.rb +6 -0
  39. data/lib/blizzard_api/wow.rb +167 -0
  40. data/lib/blizzard_api/wow/community/achievements.rb +45 -0
  41. data/lib/blizzard_api/wow/community/auction.rb +25 -0
  42. data/lib/blizzard_api/wow/community/boss.rb +35 -0
  43. data/lib/blizzard_api/wow/community/challenge.rb +35 -0
  44. data/lib/blizzard_api/wow/community/character.rb +103 -0
  45. data/lib/blizzard_api/wow/community/guild.rb +67 -0
  46. data/lib/blizzard_api/wow/community/item.rb +46 -0
  47. data/lib/blizzard_api/wow/community/mount.rb +24 -0
  48. data/lib/blizzard_api/wow/community/pets.rb +85 -0
  49. data/lib/blizzard_api/wow/community/pvp.rb +34 -0
  50. data/lib/blizzard_api/wow/community/quest.rb +25 -0
  51. data/lib/blizzard_api/wow/community/recipe.rb +25 -0
  52. data/lib/blizzard_api/wow/community/spell.rb +25 -0
  53. data/lib/blizzard_api/wow/community/zone.rb +35 -0
  54. data/lib/blizzard_api/wow/game_data/connected_realm.rb +37 -0
  55. data/lib/blizzard_api/wow/game_data/generic_data_endpoint.rb +58 -0
  56. data/lib/blizzard_api/wow/game_data/mythic_keystone_affix.rb +23 -0
  57. data/lib/blizzard_api/wow/game_data/playable_class.rb +62 -0
  58. data/lib/blizzard_api/wow/game_data/playable_specialization.rb +70 -0
  59. data/lib/blizzard_api/wow/game_data/power_type.rb +23 -0
  60. data/lib/blizzard_api/wow/game_data/race.rb +51 -0
  61. data/lib/blizzard_api/wow/game_data/realm.rb +48 -0
  62. data/lib/blizzard_api/wow/game_data/region.rb +49 -0
  63. data/lib/blizzard_api/wow/request.rb +16 -0
  64. metadata +198 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 25a4f7ae3f8e8b5230e6cc493c10f964dc977f45d1813e6d074b24237094299f
4
+ data.tar.gz: bc1a1ab587dec338a24e6013373e32cc21fb32db7c098128098b7f0246f50439
5
+ SHA512:
6
+ metadata.gz: 88c61c928fb2743d79cdf7d5fd4b8c6117317c5e102908d7108fea7d71887a9ebf916e7dc858055daff7dbf7df563e3525638382ba411cf51a14bdd78a46de54
7
+ data.tar.gz: 7b73bd97fa40f2ffb7161a855c107a515e42a155b5357d51f094f54f02060f8079eb5fb2ec60a49651d71920aa5be98e25c93f02d266709b73cfa0bfbb22a362
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ .env
10
+ .idea
11
+ *.gem
12
+ .directory
data/.gitlab-ci.yml ADDED
@@ -0,0 +1,28 @@
1
+ cache:
2
+ paths:
3
+ - .env
4
+
5
+ stages:
6
+ - prepare
7
+ - codecheck
8
+ - test
9
+
10
+ environment-setup:
11
+ stage: prepare
12
+ script:
13
+ - rvm use 2.5.3 --install
14
+ - bundle install
15
+ - cat /dev/null > .env
16
+ - echo "BNET_APPLICATION_ID=$BNET_APP_ID" >> .env
17
+ - echo "BNET_APPLICATION_SECRET=$BNET_APP_SECRET" >> .env
18
+ - echo "USE_CACHE=$USE_CACHE" >> .env
19
+
20
+ rubocop:
21
+ stage: codecheck
22
+ script:
23
+ - rubocop
24
+
25
+ minitest:
26
+ stage: test
27
+ script:
28
+ - rake
data/.rubocop.yml ADDED
@@ -0,0 +1,13 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Metrics/LineLength:
4
+ Max: 120
5
+
6
+ Metrics/AbcSize:
7
+ Max: 20
8
+
9
+ AllCops:
10
+ TargetRubyVersion: 2.5
11
+ Exclude:
12
+ - 'vendor/**/*'
13
+ - 'bin/**/*'
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,7 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2018-12-16 19:08:57 -0200 using RuboCop version 0.61.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.5.3
7
+ before_install: gem install bundler -v 1.16.6
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ Please view this file on the master branch, otherwise it may be outdated
2
+
3
+ **Version 0.1.0**
4
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
+
7
+ # Specify your gem's dependencies in blizzard-api.gemspec
8
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,44 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ blizzard_api (0.1.0)
5
+ redis (~> 4.1, >= 4.1.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ast (2.4.0)
11
+ dotenv (2.5.0)
12
+ jaro_winkler (1.5.1)
13
+ minitest (5.11.3)
14
+ parallel (1.12.1)
15
+ parser (2.5.3.0)
16
+ ast (~> 2.4.0)
17
+ powerpack (0.1.2)
18
+ rainbow (3.0.0)
19
+ rake (10.5.0)
20
+ redis (4.1.0)
21
+ rubocop (0.61.1)
22
+ jaro_winkler (~> 1.5.1)
23
+ parallel (~> 1.10)
24
+ parser (>= 2.5, != 2.5.1.1)
25
+ powerpack (~> 0.1)
26
+ rainbow (>= 2.2.2, < 4.0)
27
+ ruby-progressbar (~> 1.7)
28
+ unicode-display_width (~> 1.4.0)
29
+ ruby-progressbar (1.10.0)
30
+ unicode-display_width (1.4.0)
31
+
32
+ PLATFORMS
33
+ ruby
34
+
35
+ DEPENDENCIES
36
+ blizzard_api!
37
+ bundler (~> 1.16)
38
+ dotenv (~> 2.5)
39
+ minitest (~> 5.0)
40
+ rake (~> 10.0)
41
+ rubocop (~> 0.61)
42
+
43
+ BUNDLED WITH
44
+ 1.17.3
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Francis Schiavo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,208 @@
1
+ # Blizzard Api
2
+
3
+ [![pipeline status](https://gitlab.com/francisschiavo/blizzard_api/badges/master/pipeline.svg)](https://gitlab.com/francisschiavo/blizzard_api/commits/master)
4
+ [![Gem Version](https://badge.fury.io/rb/blizzard_api.svg)](https://badge.fury.io/rb/blizzard_api)
5
+
6
+
7
+ This gem allow you to interface with the new blizzard api (2018) using the OAuth2 protocol for every request.
8
+
9
+ **Important**: This gem does not support, nor will support China endpoints.
10
+
11
+ ## Table of contents
12
+ 1. [Installation](#1-installation)
13
+ 2. [Configuration](#2-configuration)
14
+ 3. [Basic usage](#1-basic-usage)
15
+ 4. [Available endpoints](#4-available-endpoints)
16
+ - 4.1. [World of Warcraft endpoints](#41-world-of-warcraft-endpoints)
17
+ - 4.2. [Diablo III endpoints](#42-diablo-iii-endpoints)
18
+ - 4.3. [Starcraft II endpoints](#43-starcraft-ii-endpoints)
19
+
20
+ ## 1. Installation
21
+
22
+ Add this line to your application's Gemfile:
23
+
24
+ ```ruby
25
+ gem 'blizzard_api'
26
+ ```
27
+
28
+ And then execute:
29
+
30
+ $ bundle
31
+
32
+ ## 2. Configuration
33
+
34
+ Before you use the api you must create a developer account at https://develop.battle.net and create the client authorization keys.
35
+
36
+ Once you have a pair of client ID and SECRET you must set up an initialization code.
37
+
38
+ ```ruby
39
+ Blizzard.configure do |config|
40
+ config.app_id = ENV['BNET_APPLICATION_ID']
41
+ config.app_secret = ENV['BNET_APPLICATION_SECRET']
42
+ config.region = 'us'
43
+ config.use_cache = true
44
+ config.redis_host = ENV['REDIS_HOST']
45
+ config.redis_port = ENV['REDIS_PORT']
46
+ end
47
+ ```
48
+
49
+ It is highly recommended to use [redis](https://redis.io/) to cache all requests as it avoids unnecessary calls and speeds up your application.
50
+
51
+ ## 3. Basic usage
52
+
53
+ You can now consume the api by instantiating a specific endpoint:
54
+
55
+ ```ruby
56
+ race = BlizzardApi::Wow::Race.new :us
57
+ race_data = race.complete
58
+ ```
59
+
60
+ or you can just use the game namespace wrapper as follows:
61
+
62
+ ```ruby
63
+ race = BlizzardApi::Wow.race
64
+ race_data = race.complete
65
+ ```
66
+
67
+ :bulb: If you use the wrapper it will always use the default region specified in the configuration file.
68
+
69
+ Most **data** endpoints will have always 3 methods available `index`, `get` and `complete`.
70
+
71
+ * `index` is used to get a list of all resources od that endpoint.
72
+ * `get` is used to get all information about a entry of the index returned data. It receives an id or slug as the first parameter, that depends on the endpoint.
73
+ * `complete` is a complete information of all items listed in index. **This may perform various calls to the blizzard api** only use if you really need all information.
74
+
75
+ ## 4. Available endpoints
76
+
77
+ **Hint**: All methods support an additional optional hash parameter that allows you to override the following configurations for a single call:
78
+
79
+ * **ttl**: < int > - Cache duration (seconds) (Only works if you have redis enabled)
80
+ * **ignore_cache**: true - Ignores the cache and forces an api request (Only works if you have redis enabled)
81
+ * **locale**: < locale id > - Changes the default locale (if any)
82
+
83
+ ### 4.1. World of Warcraft endpoints
84
+
85
+ * Blizzard::Wow::Achievement
86
+ - get :id
87
+ - character_achievement_index
88
+ - guild_achievement_index
89
+ * Blizzard::Wow::Auction
90
+ - get :realm
91
+ * Blizzard::Wow::Boss
92
+ - index
93
+ - get :id
94
+ * Blizzard::Wow::Challenge
95
+ - realm_index
96
+ - region_index
97
+ * Blizzard::Wow::Character
98
+ - get :realm, :character, :fields
99
+ - get_keystone_profile :realm, :character, :user_token, :season
100
+ - get_user_characters :user_token
101
+ * Blizzard::Wow::Guild
102
+ - get :relam, :name, :fields
103
+ - rewards
104
+ - perks
105
+ * Blizzard::Wow::Item
106
+ - get :id
107
+ - item_set :setId
108
+ * Blizzard::Wow::Mount
109
+ - index
110
+ * Blizzard::Wow::Pet
111
+ - index
112
+ - ability :id
113
+ - species :id
114
+ - stats :level, :breed_id, :quality_id
115
+ - types
116
+ * Blizzard::Wow::PvP
117
+ - get :bracket
118
+ * Blizzard::Wow::Quest
119
+ - get :id
120
+ * Blizzard::Wow::Recipe
121
+ - get :id
122
+ * Blizzard::Wow::Spell
123
+ - get :id
124
+ * Blizzard::Wow::Zone
125
+ - index
126
+ - get :id
127
+ * Blizzard::Wow::ConnectedRealm
128
+ - index
129
+ - get :id
130
+ - complete
131
+ * Blizzard::Wow::MythicKeystonesAffix
132
+ - index
133
+ - get :id
134
+ - complete
135
+ * Blizzard::Wow::PlayableClass
136
+ - index
137
+ - get :id
138
+ - complete
139
+ * Blizzard::Wow::PlayableSpecialization
140
+ - index
141
+ - get :id
142
+ - complete
143
+ * Blizzard::Wow::PowerType
144
+ - index
145
+ - get :id
146
+ - complete
147
+ * Blizzard::Wow::Race
148
+ - index
149
+ - get :id
150
+ - complete
151
+ * Blizzard::Wow::Realm
152
+ - index
153
+ - get :id
154
+ - complete
155
+ * Blizzard::Wow::Region
156
+ - index
157
+ - get :id
158
+ - complete
159
+
160
+ ### 4.2. Diablo III endpoints
161
+
162
+ * BlizzardApi::Diablo::Act
163
+ - index
164
+ - get :id
165
+ * BlizzardApi::Diablo::Artisan
166
+ - get :artisan_slug
167
+ - recipe :artisan_slug, :recipe_slug
168
+ * BlizzardApi::Diablo::Follower
169
+ - get :slug
170
+ * BlizzardApi::Diablo::Character
171
+ - get :class_slug
172
+ - skill :class_slug, :skill_slug
173
+ * BlizzardApi::Diablo::ItemType
174
+ - index
175
+ - get :item_type_slug
176
+ * BlizzardApi::Diablo::Item
177
+ - get :item_slug, :item_id
178
+ * BlizzardApi::Diablo::Profile
179
+ - index :battletag, :oauth_token
180
+ - hero :battletag, :oauth_token, :hero_id
181
+ - hero_items :battletag, :oauth_token, :hero_id
182
+ - hero_follower_items :battletag, :oauth_token, :hero_id
183
+
184
+ ### 4.3. Starcraft II endpoints
185
+
186
+ Every endpoint requiring a *region_id* parameter will accepts either the integer representation of the region described in the api docs or a symbol: `:US`, `:EU`, `:KO` or `:TW`
187
+
188
+ * BlizzardApi::Starcraft::League
189
+ - get :season_id, :queue_id, :team_type, :league_id
190
+ * BlizzardApi::Starcraft::Profile
191
+ - static :region_id
192
+ - metadata :region_id, :realm_id, :profile_id
193
+ - profile :region_id, :realm_id, :profile_id
194
+ - ladder_summary :region_id, :realm_id, :profile_id
195
+ - ladder :region_id, :realm_id, :profile_id, :ladder_id
196
+ * BlizzardApi::Starcraft::Ladder
197
+ - grandmaster :region_id, :options
198
+ - season :region_id
199
+ * BlizzardApi::Starcraft::Account
200
+ - player :account_id
201
+
202
+ ## Contributing
203
+
204
+ Bug reports and pull requests are welcome on Gitlab at https://gitlab.com/francisschiavo/blizzard_api/issues
205
+
206
+ ## License
207
+
208
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
+ end
11
+
12
+ task default: :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'blizzard/api'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'blizzard_api/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.required_ruby_version = '>= 2.5'
9
+ spec.name = 'blizzard_api'
10
+ spec.version = BlizzardApi::VERSION
11
+ spec.authors = ['Francis Schiavo']
12
+ spec.email = ['francis.schiavo@francisschiavo.com']
13
+ spec.summary = 'Unofficial Ruby client for Blizzard Entertainment API'
14
+ spec.description = 'This is a simple interface to obtain data from Blizzard API'
15
+ spec.homepage = 'https://gitlab.com/francisschiavo/blizzard_api'
16
+ spec.license = 'MIT'
17
+
18
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
19
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
20
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
21
+
22
+ spec.metadata['homepage_uri'] = spec.homepage
23
+ spec.metadata['source_code_uri'] = 'https://gitlab.com/francisschiavo/blizzard_api'
24
+ spec.metadata['changelog_uri'] = 'https://gitlab.com/francisschiavo/blizzard_api/blob/master/CHANGELOG.md'
25
+
26
+ # Specify which files should be added to the gem when it is released.
27
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
29
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
30
+ end
31
+ spec.bindir = 'exe'
32
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
+ spec.require_paths = ['lib']
34
+
35
+ spec.add_runtime_dependency 'redis', '~> 4.1', '>= 4.1.0'
36
+
37
+ spec.add_development_dependency 'bundler', '~> 1.16'
38
+ spec.add_development_dependency 'dotenv', '~> 2.5'
39
+ spec.add_development_dependency 'minitest', '~> 5.0'
40
+ spec.add_development_dependency 'rake', '~> 10.0'
41
+ spec.add_development_dependency 'rubocop', '~> 0.61'
42
+ end