blizzard_api 3.4.3 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8a5178383a51b7598cc64b98159fc06b59f368602ea7735386183fb17db2f3c
4
- data.tar.gz: e8980a8052eec717672b577070346225c6bf466692a3ea3b282a922bff4bd323
3
+ metadata.gz: e7001dfa4c7c5712eaf8b8e4cf4785006d000150148e6ba3757095b1ebac9a23
4
+ data.tar.gz: 300638e6cd003a6af590e0a9eeba272f2e2d3094417826ac494ec6fbef2ef1e0
5
5
  SHA512:
6
- metadata.gz: 3c261788c93ed802647a809d5fffc394899b50ee33e211d86a355673fdbd429f5009819ac0ec917f788afaa39aae1030f5ae2afde042d2c57ce5f4a65ff3e1d9
7
- data.tar.gz: f9afd208d352a2473f9bc17e76a15999f64c116efb18ed81e9e54d6eb1d7d425ac5fb54824226aaff88eca5d23471f909e5684ab6330c996873f3ed559a0f7d2
6
+ metadata.gz: dee9b6a3b3de00e4bf077245393bf7bf9308e17806c4237ad7a9088ebcd560db229dff31b60ac31424aad1aaa6dca6a64ec865e9079c0c90cbe181f89cb61db7
7
+ data.tar.gz: 4c635e72548d627edcf101cd06451476ddd4e8fd988ce4685dbf8668e1d8c9db34801783236bdce4c3172f0e31acfe2710c550074f65d156367980100090fd19
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  Please view this file on the master branch, otherwise it may be outdated
2
2
 
3
+ **Version 4.1.0**
4
+
5
+ Removed the discontinued Overwatch League API
6
+
7
+ Updated all dependencies to latest version
8
+
9
+ Note: While this introduces a breaking change, I did not bump version to 5.x.x
10
+ since the Overwatch League API was already broken.
11
+
12
+ **Version 4.0.0**
13
+
14
+ **Warning**: This version introduces breaking changes to the way the gem handles the Redis connection.
15
+ Instead of providing the HOST, PORT and DB as separate options, now you should provide the full URL in the `redis_url` option.
16
+
17
+ This allows for more flexibility when using Redis, as it is now possible to use a password protected database.
18
+
19
+ Added a binary for experimenting with the gem or using it as a command line tool.
20
+
3
21
  **Version 3.4.0**
4
22
 
5
23
  Added new collections endpoints for toys and heirlooms.
data/Gemfile.lock CHANGED
@@ -1,25 +1,26 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- blizzard_api (3.4.3)
4
+ blizzard_api (4.1.0)
5
5
  redis (~> 4.1, >= 4.1.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ast (2.4.2)
11
- dotenv (2.8.1)
12
- minitest (5.20.0)
13
- parallel (1.23.0)
14
- parser (3.2.2.4)
11
+ dotenv (3.1.2)
12
+ minitest (5.24.1)
13
+ parallel (1.25.1)
14
+ parser (3.3.4.0)
15
15
  ast (~> 2.4.1)
16
16
  racc
17
- racc (1.7.1)
17
+ racc (1.8.0)
18
18
  rainbow (3.1.1)
19
- rake (13.0.6)
19
+ rake (13.2.1)
20
20
  redis (4.8.1)
21
- regexp_parser (2.8.2)
22
- rexml (3.2.6)
21
+ regexp_parser (2.9.2)
22
+ rexml (3.3.2)
23
+ strscan
23
24
  rubocop (0.93.1)
24
25
  parallel (~> 1.10)
25
26
  parser (>= 2.7.1.5)
@@ -29,22 +30,26 @@ GEM
29
30
  rubocop-ast (>= 0.6.0)
30
31
  ruby-progressbar (~> 1.7)
31
32
  unicode-display_width (>= 1.4.0, < 2.0)
32
- rubocop-ast (1.29.0)
33
- parser (>= 3.2.1.0)
33
+ rubocop-ast (1.31.3)
34
+ parser (>= 3.3.1.0)
35
+ rubocop-minitest (0.27.0)
36
+ rubocop (>= 0.90, < 2.0)
34
37
  ruby-progressbar (1.13.0)
38
+ strscan (3.1.0)
35
39
  unicode-display_width (1.8.0)
36
- yard (0.9.34)
40
+ yard (0.9.36)
37
41
 
38
42
  PLATFORMS
39
43
  ruby
40
44
 
41
45
  DEPENDENCIES
42
46
  blizzard_api!
43
- dotenv
44
- minitest (~> 5.0)
45
- rake (~> 13.0)
46
- rubocop (~> 0.61)
47
- yard
47
+ dotenv (~> 3.1)
48
+ minitest (~> 5.22)
49
+ rake (~> 13.2)
50
+ rubocop (~> 0.93.1)
51
+ rubocop-minitest (~> 0.27.0)
52
+ yard (~> 0.9.36)
48
53
 
49
54
  BUNDLED WITH
50
- 2.2.17
55
+ 2.4.22
data/README.md CHANGED
@@ -25,8 +25,15 @@ gem 'blizzard_api'
25
25
  ```
26
26
 
27
27
  And then execute:
28
+ ```bash
29
+ $ bundle
30
+ ```
31
+
32
+ You can also install the gem and use as a standalone binary:
28
33
 
29
- $ bundle
34
+ ```bash
35
+ gem install blizzard_api
36
+ ```
30
37
 
31
38
  ## 2. Configuration
32
39
 
@@ -39,15 +46,84 @@ BlizzardApi.configure do |config|
39
46
  config.app_id = ENV['BNET_APPLICATION_ID']
40
47
  config.app_secret = ENV['BNET_APPLICATION_SECRET']
41
48
  config.region = 'us'
42
- config.use_cache = true
43
- config.redis_host = ENV['REDIS_HOST']
44
- config.redis_port = ENV['REDIS_PORT']
49
+ config.redis_url = 'redis://localhost:6379/0'
50
+ config.cache_access_token = true
45
51
  end
46
52
  ```
47
53
 
48
54
  It is highly recommended to use [redis](https://redis.io/) to cache all requests as it avoids unnecessary calls and speeds up your application.
49
55
 
50
- ## 3. Basic usage
56
+ ## 3. Using the shipped binary
57
+
58
+ This gem ships with a binary that allows you to perform requests to the api directly from the command line. Suppoerted arguments:
59
+
60
+ ## 3.1 Configuration
61
+
62
+ | Argument | Description |
63
+ |--------------------------|----------------------------------------------------------------------------------------------------------------------------|
64
+ | -a, --auth | A pair of application ID and secret created on the Blizzard API dev portal. Argument must be provided as APP_ID:APP_SECRET |
65
+ | -c, --cache | A valid Redis connection string. redis://user:password@host:port/db |
66
+ | -h, --help | Prints this help |
67
+ | -j, --json | Outputs the payload as JSON. |
68
+ | -J, --formatted-json | Outputs the payload as pretty formatted JSON. |
69
+ | -l, --locale | Locale to use when retrieving data. |
70
+ | -o, --output | Path to an output file. |
71
+ | -r, --region | Region to use for the API calls. Default is **us** |
72
+ | -t, --cache-access-token | Cache the access token in Redis |
73
+ | -v, --version | Prints the version |
74
+
75
+ Some arguments can be loaded from environment variables:
76
+
77
+ | Environment Variable | Description | Replaced argument |
78
+ |-------------------------|---------------------------------|-------------------|
79
+ | BNET_APPLICATION_ID | Blizzard API application ID | -a |
80
+ | BNET_APPLICATION_SECRET | Blizzard API application secret | -a |
81
+ | REGION | Blizzard API region | -r |
82
+ | BNET_REDIS_URL | Redis connection string | -c |
83
+ | BNET_CACHE_ACCESS_TOKEN | Cache the access token in Redis | -t |
84
+
85
+ **Note**: You can also use Dotenv to load the environment variables from a `.env` file as long as you have Dotenv installed
86
+ and the `.env` file is present in the same directory you are invoking the binary from.
87
+
88
+ ## 3.2. Command line usage
89
+
90
+ You can fetch API endpoints data by using the following format:
91
+
92
+ ```bash
93
+ blizzard_api <game namespace> <api endpoint> <endpoint method> [arguments]
94
+ ```
95
+
96
+ ## 3.3. Examples
97
+
98
+ ### 3.3.1. Using the binary to get a list of realms
99
+
100
+ ```bash
101
+ blizzard_api wow realm index
102
+ ````
103
+
104
+ ### 3.3.1. Using the binary to get a specific realm
105
+
106
+ Full payload:
107
+ ```bash
108
+ blizzard_api wow realm get 5909
109
+ ````
110
+
111
+ Full payload as formatted JSON:
112
+ ```bash
113
+ blizzard_api -J wow realm get 5909
114
+ ````
115
+
116
+ Full payload as formatted JSON to file:
117
+ ```bash
118
+ blizzard_api -Jo realm.json wow realm get 5909
119
+ ````
120
+
121
+ en-US only payload as formatted JSON:
122
+ ```bash
123
+ blizzard_api -Jl en_US wow realm get 5909
124
+ ````
125
+
126
+ ## 4. Basic usage
51
127
 
52
128
  You can now consume the api by instantiating a specific endpoint:
53
129
 
@@ -69,7 +145,7 @@ Most **game data** endpoints will have always 3 methods available `index`, `get`
69
145
  * `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.
70
146
  * `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.
71
147
 
72
- ### 3.1 Searchable endpoints
148
+ ### 4.1 Searchable endpoints
73
149
 
74
150
  Some endpoints support search filters. To perform a search you can use the following formats:
75
151
 
@@ -108,7 +184,7 @@ realm_data = realm.search(1, 100) do |options|
108
184
  end
109
185
  ```
110
186
 
111
- ## 4. Available endpoints
187
+ ## 5. Available endpoints
112
188
 
113
189
  **Hint**: All methods support an additional optional hash parameter that allows you to override the following configurations for a single call:
114
190
 
@@ -120,7 +196,7 @@ end
120
196
  * **use_community_endpoint**: Some methods in game data still have an odl community version available.
121
197
  * **classic**: Set to true to query WoW Classic data, only works for some game data endpoints.
122
198
 
123
- ### 4.1. World of Warcraft endpoints
199
+ ### 5.1. World of Warcraft endpoints
124
200
 
125
201
  * [BlizzardApi::Wow.achievement](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Wow/Achievement)
126
202
  * [BlizzardApi::Wow.auction](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Wow/Auction)
@@ -162,7 +238,7 @@ end
162
238
  * [BlizzardApi::Wow.guild](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Wow/Guild)
163
239
  * [BlizzardApi::Wow.character_profile](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Wow/CharacterProfile)
164
240
 
165
- ### 4.2. Diablo III endpoints
241
+ ### 5.2. Diablo III endpoints
166
242
 
167
243
  * [BlizzardApi::Diablo.season](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Diablo/Season)
168
244
  * [BlizzardApi::Diablo.era](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Diablo/Era)
@@ -174,14 +250,14 @@ end
174
250
  * [BlizzardApi::Diablo.item](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Diablo/Item)
175
251
  * [BlizzardApi::Diablo.profile](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Diablo/Profile)
176
252
 
177
- ### 4.3. Hearthstone endpoints
253
+ ### 5.3. Hearthstone endpoints
178
254
 
179
255
  * [BlizzardApi::Hearthstone.card](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Hearthstone/Card)
180
256
  * [BlizzardApi::Hearthstone.back](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Hearthstone/Back)
181
257
  * [BlizzardApi::Hearthstone.deck](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Hearthstone/Deck)
182
258
  * [BlizzardApi::Hearthstone.metadata](https://rubydoc.info/gems/blizzard_api/BlizzardApi/Hearthstone/Metadata)
183
259
 
184
- ### 4.4. Starcraft II endpoints
260
+ ### 5.4. Starcraft II endpoints
185
261
 
186
262
  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
263
 
data/bin/blizzard_api ADDED
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'logger'
4
+ logger = Logger.new(STDOUT)
5
+
6
+ require 'bundler/setup'
7
+ require 'blizzard_api'
8
+ require 'irb'
9
+ require 'optparse'
10
+
11
+ begin
12
+ require 'dotenv/load'
13
+ rescue LoadError
14
+ logger.warn 'Dotenv gem not found. You must provide all arguments via the command line or system environment variables.'
15
+ end
16
+
17
+ options = {}
18
+ parser = OptionParser.new do |opts|
19
+ opts.banner = 'Interactive console for testing the BlizzardApi gem.'
20
+ opts.on('-a', '--auth AUTH', 'A pair of application ID and secret created on the Blizzard API dev portal. Argument must be provided as APP_ID:APP_SECRET') do |c|
21
+ ENV['BNET_APPLICATION_ID'], ENV['BNET_APPLICATION_SECRET'] = c.split(':')
22
+ end
23
+ opts.on('-c', '--cache REDIS_URL', 'A valid Redis connection string. redis://user:password@host:port/db', ) { |c| ENV['REDIS_URL'] = c }
24
+ opts.on('-h', '--help', 'Prints this help') { puts opts; exit }
25
+ opts.on('-j', '--json', 'Outputs the payload as JSON.') { options[:format] = 'json' }
26
+ opts.on('-J', '--formatted-json', 'Outputs the payload as pretty formatted JSON.') { options[:format] = 'json'; options[:pretty_print] = true }
27
+ opts.on('-l', '--locale LOCALE', 'Locale to use when retrieving data.') { |l| options[:locale] = l.to_sym }
28
+ opts.on('-o', '--output FILENAME', 'Path to an output file.') { |o| options[:output] = o }
29
+ opts.on('-r', '--region REGION', 'Region to use for the API calls. Default is us') { |r| ENV['REGION'] = r }
30
+ opts.on('-t', '--cache-access-token', 'Cache the access token in Redis') { ENV['CACHE_ACCESS_TOKEN]'] = 'true' }
31
+ opts.on('-v', '--version', 'Prints the version') { puts BlizzardApi::VERSION; exit }
32
+ end
33
+ parser.parse!
34
+
35
+ app_id = ENV.fetch('BNET_APPLICATION_ID', false)
36
+ app_secret = ENV.fetch('BNET_APPLICATION_SECRET', false)
37
+
38
+ if !app_id || !app_secret
39
+ logger.fatal 'You must provide an application ID and secret.'
40
+ exit 1
41
+ end
42
+
43
+ BlizzardApi.configure do |config|
44
+ config.app_id = app_id
45
+ config.app_secret = app_secret
46
+ config.region = ENV.fetch('REGION', 'us')
47
+ config.redis_url = ENV['REDIS_URL']
48
+ config.cache_access_token = ENV.fetch('CACHE_ACCESS_TOKEN', 'false').eql? 'true'
49
+ end
50
+
51
+ unless ARGV.length.positive?
52
+ IRB.start(__FILE__)
53
+ exit
54
+ end
55
+
56
+ class Runner
57
+ attr_reader :options
58
+
59
+ def initialize(api, endpoint, method, *args, **options)
60
+ @api = nested_class(BlizzardApi, api, 'Invalid API name. Valid APIs are: diablo, hearthstone, overwatch_league, starcraft and wow')
61
+ @endpoint = nested_class(@api, endpoint, 'Invalid endpoint name.')
62
+ @method = method
63
+ @args = parse_args args
64
+ @options = options
65
+ end
66
+
67
+ def run
68
+ data = consume_endpoint
69
+ if options[:output]
70
+ File.open(options[:output], 'w') { |f| f.write(data) }
71
+ else
72
+ puts data
73
+ end
74
+ end
75
+
76
+ private
77
+
78
+ def camelize(s)
79
+ s.split('_').map(&:capitalize).join
80
+ end
81
+
82
+ def nested_class(instance, class_name, msg)
83
+ class_name = camelize(class_name)
84
+ instance.const_get(class_name)
85
+ rescue NameError
86
+ raise StandardError, msg
87
+ end
88
+
89
+ def parse_args(args)
90
+ args.map do |arg|
91
+ begin
92
+ return arg.to_i if arg.match?(/^\d+$/)
93
+ return arg.to_sym if arg.match?(/^:[a-z_]+$/)
94
+ return arg.to_f if arg.match?(/^\d+\.\d+$/)
95
+ return arg.to_bool if arg.match?(/^(true|false)$/i)
96
+ if arg.match?(/^\{.*}$/)
97
+ result = arg.scan(/(\w+):\s+([^(;|})]+)/).each_with_object({}) do |(k,v), hash|
98
+ hash[k.to_sym] = v.strip
99
+ end
100
+ return [result]
101
+ end
102
+ arg
103
+ end
104
+ end
105
+ end
106
+
107
+ def consume_endpoint
108
+ opts = options.slice :locale
109
+ api_client = @endpoint.new
110
+ data = api_client.send(@method, *@args, **opts)
111
+ if options[:format].eql? 'json'
112
+ data = if options[:pretty_print]
113
+ JSON.pretty_generate data
114
+ else
115
+ JSON.generate data
116
+ end
117
+ end
118
+
119
+ data
120
+ end
121
+ end
122
+
123
+ runner = Runner.new(*ARGV, **options)
124
+ runner.run
data/bin/setup CHANGED
@@ -4,5 +4,3 @@ IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
6
  bundle install
7
-
8
- # Do any other automated setup that you need to do here
data/blizzard_api.gemspec CHANGED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'blizzard_api/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.required_ruby_version = '>= 2.7.2'
8
+ spec.required_ruby_version = '>= 3.0'
9
9
  spec.name = 'blizzard_api'
10
10
  spec.version = BlizzardApi::VERSION
11
11
  spec.authors = ['Francis Schiavo']
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
19
19
  # to allow pushing to a single host or delete this section to allow pushing to any host.
20
20
  raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
21
21
 
22
- spec.metadata['homepage_uri'] = spec.homepage
23
22
  spec.metadata['source_code_uri'] = 'https://github.com/francis-schiavo/blizzard_api'
24
23
  spec.metadata['bug_tracker_uri'] = 'https://github.com/francis-schiavo/blizzard_api/issues'
25
24
  spec.metadata['changelog_uri'] = 'https://github.com/francis-schiavo/blizzard_api/blob/master/CHANGELOG.md'
@@ -28,17 +27,17 @@ Gem::Specification.new do |spec|
28
27
  # Specify which files should be added to the gem when it is released.
29
28
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
29
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
31
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
30
+ `git ls-files -z`.split("\x0").reject { |f| f.match(/^(test|\..+|Rakefile)/) }
32
31
  end
33
- spec.bindir = 'exe'
34
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
+ spec.executables = 'blizzard_api'
35
33
  spec.require_paths = ['lib']
36
34
 
37
35
  spec.add_runtime_dependency 'redis', '~> 4.1', '>= 4.1.0'
38
36
 
39
- spec.add_development_dependency 'dotenv'
40
- spec.add_development_dependency 'minitest', '~> 5.0'
41
- spec.add_development_dependency 'rake', '~> 13.0'
42
- spec.add_development_dependency 'rubocop', '~> 0.61'
43
- spec.add_development_dependency 'yard'
37
+ spec.add_development_dependency 'dotenv', '~> 3.1'
38
+ spec.add_development_dependency 'minitest', '~> 5.22'
39
+ spec.add_development_dependency 'rake', '~> 13.2'
40
+ spec.add_development_dependency 'rubocop', '~> 0.93.1'
41
+ spec.add_development_dependency 'rubocop-minitest', '~> 0.27.0'
42
+ spec.add_development_dependency 'yard', '~> 0.9.36'
44
43
  end
@@ -30,32 +30,10 @@ module BlizzardApi
30
30
  attr_accessor :mode
31
31
 
32
32
  ##
33
- # @!attribute use_cache
34
- # If true requests will be cached using a Redis server.
35
- # @see https://redis.io/
36
- # @return [Boolean] Application ID
37
- attr_accessor :use_cache
38
-
39
- ##
40
- # @!attribute redis_host
41
- # Redis host.
42
- # @see https://redis.io/
43
- # @return [String] Redis host
44
- attr_accessor :redis_host
45
-
46
- ##
47
- # @!attribute redis_port
48
- # Redis port.
49
- # @see https://redis.io/
50
- # @return [Integer] Redis port
51
- attr_accessor :redis_port
52
-
53
- ##
54
- # @!attribute redis_database
55
- # Redis databse.
56
- # @see https://redis.io/
57
- # @return [Integer] Redis database
58
- attr_accessor :redis_database
33
+ # @!attribute redis_url
34
+ # Redis connection string. Overrides redis_host, redis_port and redis_database.
35
+ # @see https://redis.io/
36
+ attr_accessor :redis_url
59
37
 
60
38
  ##
61
39
  # @!attribute cache_access_token
@@ -70,15 +48,13 @@ module BlizzardApi
70
48
  # @yield self
71
49
  #
72
50
  # @example
73
- # BlizzardApi.configure do |config|
74
- # config.app_id = ENV['BNET_APPLICATION_ID']
75
- # config.app_secret = ENV['BNET_APPLICATION_SECRET']
76
- # config.region = 'us'
77
- #
78
- # config.use_cache = true
79
- # config.redis_host = ENV['REDIS_HOST']
80
- # config.redis_port = ENV['REDIS_PORT']
81
- # end
51
+ # BlizzardApi.configure do |config|
52
+ # config.app_id = ENV['BNET_APPLICATION_ID']
53
+ # config.app_secret = ENV['BNET_APPLICATION_SECRET']
54
+ # config.region = 'us'
55
+ # config.redis_url = 'redis://localhost:6379/0'
56
+ # config.cache_access_token = true
57
+ # end
82
58
  def configure
83
59
  yield self
84
60
  end
@@ -86,8 +62,11 @@ module BlizzardApi
86
62
  ##
87
63
  # Initializes some default values for the main module
88
64
  def self.extended(base)
89
- base.redis_port = 1
90
65
  base.mode = :regular
91
66
  end
67
+
68
+ def use_cache?
69
+ @use_cache ||= !redis_url.nil?
70
+ end
92
71
  end
93
72
  end
@@ -177,11 +177,11 @@ module BlizzardApi
177
177
  end
178
178
 
179
179
  def save_in_cache(resource_url, data, ttl)
180
- BlizzardApi.redis_connection.setex resource_url, ttl, data if BlizzardApi.use_cache
180
+ BlizzardApi.redis_connection.setex resource_url, ttl, data if BlizzardApi.use_cache?
181
181
  end
182
182
 
183
183
  def find_in_cache(resource_url)
184
- return false unless BlizzardApi.use_cache
184
+ return false unless BlizzardApi.use_cache?
185
185
 
186
186
  BlizzardApi.redis_connection.get resource_url if BlizzardApi.redis_connection.exists? resource_url
187
187
  end
@@ -29,7 +29,7 @@ module BlizzardApi
29
29
  end
30
30
 
31
31
  def restore_access_token
32
- return false unless use_cache && cache_access_token
32
+ return false unless use_cache? && cache_access_token
33
33
 
34
34
  return false unless redis_connection.exists? REDIS_TOKEN_KEY
35
35
 
@@ -43,7 +43,7 @@ module BlizzardApi
43
43
  self.expires_at = Time.now + ttl
44
44
  self.access_token = token_data['access_token']
45
45
 
46
- redis_connection.setex REDIS_TOKEN_KEY, ttl, access_token if use_cache && cache_access_token
46
+ redis_connection.setex REDIS_TOKEN_KEY, ttl, access_token if use_cache? && cache_access_token
47
47
  end
48
48
  end
49
49
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module BlizzardApi
4
4
  # Gem version
5
- VERSION = '3.4.3'
5
+ VERSION = '4.1.0'
6
6
  end
data/lib/blizzard_api.rb CHANGED
@@ -11,7 +11,6 @@ require_relative 'blizzard_api/wow'
11
11
  require_relative 'blizzard_api/diablo'
12
12
  require_relative 'blizzard_api/hearthstone'
13
13
  require_relative 'blizzard_api/starcraft'
14
- require_relative 'blizzard_api/overwatch_league'
15
14
 
16
15
  # Blizzard namespace
17
16
  module BlizzardApi
@@ -19,8 +18,8 @@ module BlizzardApi
19
18
  extend Configuration
20
19
 
21
20
  def self.redis_connection
22
- return nil unless use_cache
21
+ return nil unless use_cache?
23
22
 
24
- @redis_connection ||= Redis.new(host: redis_host, port: redis_port, db: redis_database)
23
+ @redis_connection ||= Redis.new(url: BlizzardApi.redis_url)
25
24
  end
26
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blizzard_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.3
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Schiavo
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-25 00:00:00.000000000 Z
11
+ date: 2024-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -34,90 +34,100 @@ dependencies:
34
34
  name: dotenv
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
39
+ version: '3.1'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0'
46
+ version: '3.1'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '5.0'
53
+ version: '5.22'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '5.0'
60
+ version: '5.22'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '13.0'
67
+ version: '13.2'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '13.0'
74
+ version: '13.2'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rubocop
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.61'
81
+ version: 0.93.1
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.61'
88
+ version: 0.93.1
89
+ - !ruby/object:Gem::Dependency
90
+ name: rubocop-minitest
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 0.27.0
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 0.27.0
89
103
  - !ruby/object:Gem::Dependency
90
104
  name: yard
91
105
  requirement: !ruby/object:Gem::Requirement
92
106
  requirements:
93
- - - ">="
107
+ - - "~>"
94
108
  - !ruby/object:Gem::Version
95
- version: '0'
109
+ version: 0.9.36
96
110
  type: :development
97
111
  prerelease: false
98
112
  version_requirements: !ruby/object:Gem::Requirement
99
113
  requirements:
100
- - - ">="
114
+ - - "~>"
101
115
  - !ruby/object:Gem::Version
102
- version: '0'
116
+ version: 0.9.36
103
117
  description: This is a simple interface to obtain data from Blizzard API
104
118
  email:
105
119
  - francis@schiavo.dev
106
- executables: []
120
+ executables:
121
+ - blizzard_api
107
122
  extensions: []
108
123
  extra_rdoc_files: []
109
124
  files:
110
- - ".github/workflows/ruby.yml"
111
- - ".gitignore"
112
- - ".rubocop.yml"
113
- - ".rubocop_todo.yml"
114
125
  - CHANGELOG.md
115
126
  - Gemfile
116
127
  - Gemfile.lock
117
128
  - LICENSE.txt
118
129
  - README.md
119
- - Rakefile
120
- - bin/console
130
+ - bin/blizzard_api
121
131
  - bin/setup
122
132
  - blizzard_api.gemspec
123
133
  - lib/blizzard_api.rb
@@ -144,13 +154,6 @@ files:
144
154
  - lib/blizzard_api/hearthstone/game_data/generic_data_endpoint.rb
145
155
  - lib/blizzard_api/hearthstone/game_data/metadata.rb
146
156
  - lib/blizzard_api/hearthstone/request.rb
147
- - lib/blizzard_api/overwatch_league.rb
148
- - lib/blizzard_api/overwatch_league/community/matches.rb
149
- - lib/blizzard_api/overwatch_league/community/players.rb
150
- - lib/blizzard_api/overwatch_league/community/segments.rb
151
- - lib/blizzard_api/overwatch_league/community/summary.rb
152
- - lib/blizzard_api/overwatch_league/community/teams.rb
153
- - lib/blizzard_api/overwatch_league/request.rb
154
157
  - lib/blizzard_api/request.rb
155
158
  - lib/blizzard_api/starcraft.rb
156
159
  - lib/blizzard_api/starcraft/community/account.rb
@@ -210,7 +213,6 @@ homepage: https://github.com/francis-schiavo/blizzard_api
210
213
  licenses:
211
214
  - MIT
212
215
  metadata:
213
- homepage_uri: https://github.com/francis-schiavo/blizzard_api
214
216
  source_code_uri: https://github.com/francis-schiavo/blizzard_api
215
217
  bug_tracker_uri: https://github.com/francis-schiavo/blizzard_api/issues
216
218
  changelog_uri: https://github.com/francis-schiavo/blizzard_api/blob/master/CHANGELOG.md
@@ -223,14 +225,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
225
  requirements:
224
226
  - - ">="
225
227
  - !ruby/object:Gem::Version
226
- version: 2.7.2
228
+ version: '3.0'
227
229
  required_rubygems_version: !ruby/object:Gem::Requirement
228
230
  requirements:
229
231
  - - ">="
230
232
  - !ruby/object:Gem::Version
231
233
  version: '0'
232
234
  requirements: []
233
- rubygems_version: 3.3.7
235
+ rubygems_version: 3.4.10
234
236
  signing_key:
235
237
  specification_version: 4
236
238
  summary: Unofficial Ruby client for Blizzard Entertainment API
@@ -1,22 +0,0 @@
1
- name: Ruby
2
-
3
- on: push
4
-
5
- jobs:
6
- test:
7
- runs-on: ubuntu-latest
8
- steps:
9
- - uses: actions/checkout@v2
10
- - name: Set up Ruby
11
- uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
12
- with:
13
- ruby-version: 3.1
14
- - name: Install dependencies
15
- run: bundle install
16
- - name: Run tests
17
- run: bundle exec rake
18
- env:
19
- BNET_APPLICATION_ID: ${{ secrets.BNET_APPLICATION_ID }}
20
- BNET_APPLICATION_SECRET: ${{ secrets.BNET_APPLICATION_SECRET }}
21
- USE_CACHE: false
22
- IGNORE_CLASSIC_TESTS: true
data/.gitignore DELETED
@@ -1,12 +0,0 @@
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/.rubocop.yml DELETED
@@ -1,18 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- Layout/LineLength:
4
- Max: 140
5
-
6
- Metrics/ModuleLength:
7
- Exclude:
8
- - 'lib/blizzard_api/wow.rb'
9
-
10
- Metrics/AbcSize:
11
- Max: 20
12
-
13
- AllCops:
14
- TargetRubyVersion: 2.7
15
- NewCops: enable
16
- Exclude:
17
- - 'vendor/**/*'
18
- - 'bin/**/*'
data/.rubocop_todo.yml DELETED
@@ -1,7 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2019-03-06 13:04:37 -0300 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/Rakefile DELETED
@@ -1,12 +0,0 @@
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 DELETED
@@ -1,14 +0,0 @@
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__)
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- module OverwatchLeague
5
- ##
6
- # This class allows access to OWL2 match data
7
- #
8
- # @see https://develop.battle.net/documentation/owl/community-apis
9
- #
10
- # You can get an instance of this class using the default region as follows:
11
- # api_instance = BlizzardApi::OverwatchLeague.matches
12
- class Matches < OverwatchLeague::Request
13
- ##
14
- # Returns match information
15
- #
16
- # @!macro request_options
17
- def get(match_id, **options)
18
- api_request "#{base_url(:community)}/v1/matches/#{match_id}", **{ ttl: CACHE_DAY }.merge(options)
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- module OverwatchLeague
5
- ##
6
- # This class allows access to OWL2 player data
7
- #
8
- # @see https://develop.battle.net/documentation/owl/community-apis
9
- #
10
- # You can get an instance of this class using the default region as follows:
11
- # api_instance = BlizzardApi::OverwatchLeague.players
12
- class Players < OverwatchLeague::Request
13
- ##
14
- # Returns player information
15
- #
16
- # @!macro request_options
17
- def get(player_id, **options)
18
- api_request "#{base_url(:community)}/v1/players/#{player_id}", **{ ttl: CACHE_DAY }.merge(options)
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- module OverwatchLeague
5
- ##
6
- # This class allows access to OWL2 segment data
7
- #
8
- # @see https://develop.battle.net/documentation/owl/community-apis
9
- #
10
- # You can get an instance of this class using the default region as follows:
11
- # api_instance = BlizzardApi::OverwatchLeague.segments
12
- class Segments < OverwatchLeague::Request
13
- ##
14
- # Returns segment information
15
- #
16
- # @!macro request_options
17
- def get(segment_id, **options)
18
- api_request "#{base_url(:community)}/v1/segments/#{segment_id}", **{ ttl: CACHE_DAY }.merge(options)
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- module OverwatchLeague
5
- ##
6
- # This class allows access to OWL2 summary data
7
- #
8
- # @see https://develop.battle.net/documentation/owl/community-apis
9
- #
10
- # You can get an instance of this class using the default region as follows:
11
- # api_instance = BlizzardApi::OverwatchLeague.summary
12
- class Summary < OverwatchLeague::Request
13
- ##
14
- # Returns summary information
15
- #
16
- # @!macro request_options
17
- def get(**options)
18
- api_request "#{base_url(:community)}/v1/owl2", **{ ttl: CACHE_DAY }.merge(options)
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- module OverwatchLeague
5
- ##
6
- # This class allows access to OWL2 team data
7
- #
8
- # @see https://develop.battle.net/documentation/owl/community-apis
9
- #
10
- # You can get an instance of this class using the default region as follows:
11
- # api_instance = BlizzardApi::OverwatchLeague.teams
12
- class Teams < OverwatchLeague::Request
13
- ##
14
- # Returns team information
15
- #
16
- # @!macro request_options
17
- def get(team_id, **options)
18
- api_request "#{base_url(:community)}/v1/teams/#{team_id}", **{ ttl: CACHE_DAY }.merge(options)
19
- end
20
- end
21
- end
22
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- module OverwatchLeague
5
- # Overwatch League requests
6
- class Request < BlizzardApi::Request
7
- ##
8
- # @!macro init_options
9
- def initialize(**options)
10
- super(**options)
11
- @game = 'owl'
12
- end
13
- end
14
- end
15
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BlizzardApi
4
- # Overwatch League related classes
5
- module OverwatchLeague
6
- require_relative 'overwatch_league/request'
7
-
8
- # Overwatch League community api
9
- require_relative 'overwatch_league/community/summary'
10
- require_relative 'overwatch_league/community/players'
11
- require_relative 'overwatch_league/community/matches'
12
- require_relative 'overwatch_league/community/segments'
13
- require_relative 'overwatch_league/community/teams'
14
-
15
- ##
16
- # @!macro init_options
17
- # @return {Summary}
18
- def self.summary(**options)
19
- BlizzardApi::OverwatchLeague::Summary.new(**options)
20
- end
21
-
22
- ##
23
- # @!macro init_options
24
- # @return {Players}
25
- def self.players(**options)
26
- BlizzardApi::OverwatchLeague::Players.new(**options)
27
- end
28
-
29
- ##
30
- # @!macro init_options
31
- # @return {Matches}
32
- def self.matches(**options)
33
- BlizzardApi::OverwatchLeague::Matches.new(**options)
34
- end
35
-
36
- ##
37
- # @!macro init_options
38
- # @return {Segments}
39
- def self.segments(**options)
40
- BlizzardApi::OverwatchLeague::Segments.new(**options)
41
- end
42
-
43
- ##
44
- # @!macro init_options
45
- # @return {Teams}
46
- def self.teams(**options)
47
- BlizzardApi::OverwatchLeague::Teams.new(**options)
48
- end
49
- end
50
- end