blizzard_api 3.4.1 → 4.0.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: 5c512afdd4603e21f9e0f69320bea3ee1217050c7529979453c4e5196ebae26d
4
- data.tar.gz: 54bf6ae69b29b36b7522072c5feadfc47255184b1a2e00acae842373d7711917
3
+ metadata.gz: 79f824ffc1cb26dddb1fc23ae4c029930feaf2c16f2d9bdbed6bbd20b815e47e
4
+ data.tar.gz: 92271ac4aed4dd441dc9b43f74afae3794035b6fde44dd76651e9f4596868978
5
5
  SHA512:
6
- metadata.gz: 0e1bf5df8fb0171d4347b35ecf5f40441ddf430f30feb62b9d0f250fc88b14abbc6649ad150e6a2a5f8f49ae71129eeff0f394433a247fa7cb5a281c8ae120a1
7
- data.tar.gz: befe1a4fb05362cd1f7cf67aa5d0d59ea14e1eb00d7455c2d7558322fe65a0c51e7339a5d9e9178aefacf654f45915e34034cbba8df53597ed8003df8e72dcd0
6
+ metadata.gz: 564512eb1d3bb2a0157b33783cf277d3f1f1ec30757972bd5c2a97485567b0f9287ad59f49f9fdc2f3ad042e342e2852d3a811620328853a10245d36a73a112c
7
+ data.tar.gz: dc87e72420e7be2f16861fb6b5ead8355fd66e7ae52f0151997440d838ca011d707ee2b7abfa2ba46bff8dd7d1d2760611fa6c3914ad014216323072719a9a1b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  Please view this file on the master branch, otherwise it may be outdated
2
2
 
3
+ **Version 4.0.0**
4
+
5
+ **Warning**: This version introduces breaking changes to the way the gem handles the Redis connection.
6
+ Instead of providing the HOST, PORT and DB as separate options, now you should provide the full URL in the `redis_url` option.
7
+
8
+ This allows for more flexibility when using Redis, as it is now possible to use a password protected database.
9
+
10
+ Added a binary for experimenting with the gem or using it as a command line tool.
11
+
3
12
  **Version 3.4.0**
4
13
 
5
14
  Added new collections endpoints for toys and heirlooms.
data/Gemfile.lock CHANGED
@@ -1,23 +1,25 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- blizzard_api (3.4.1)
4
+ blizzard_api (4.0.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.16.3)
13
- parallel (1.22.1)
14
- parser (3.1.3.0)
11
+ dotenv (3.1.0)
12
+ minitest (5.22.3)
13
+ parallel (1.24.0)
14
+ parser (3.3.1.0)
15
15
  ast (~> 2.4.1)
16
+ racc
17
+ racc (1.7.3)
16
18
  rainbow (3.1.1)
17
- rake (13.0.6)
18
- redis (4.8.0)
19
- regexp_parser (2.6.1)
20
- rexml (3.2.5)
19
+ rake (13.2.1)
20
+ redis (4.8.1)
21
+ regexp_parser (2.9.0)
22
+ rexml (3.2.6)
21
23
  rubocop (0.93.1)
22
24
  parallel (~> 1.10)
23
25
  parser (>= 2.7.1.5)
@@ -27,24 +29,25 @@ GEM
27
29
  rubocop-ast (>= 0.6.0)
28
30
  ruby-progressbar (~> 1.7)
29
31
  unicode-display_width (>= 1.4.0, < 2.0)
30
- rubocop-ast (1.24.0)
31
- parser (>= 3.1.1.0)
32
- ruby-progressbar (1.11.0)
32
+ rubocop-ast (1.31.2)
33
+ parser (>= 3.3.0.4)
34
+ rubocop-minitest (0.27.0)
35
+ rubocop (>= 0.90, < 2.0)
36
+ ruby-progressbar (1.13.0)
33
37
  unicode-display_width (1.8.0)
34
- webrick (1.7.0)
35
- yard (0.9.28)
36
- webrick (~> 1.7.0)
38
+ yard (0.9.36)
37
39
 
38
40
  PLATFORMS
39
41
  ruby
40
42
 
41
43
  DEPENDENCIES
42
44
  blizzard_api!
43
- dotenv
44
- minitest (~> 5.0)
45
- rake (~> 13.0)
46
- rubocop (~> 0.61)
47
- yard
45
+ dotenv (~> 3.1)
46
+ minitest (~> 5.22)
47
+ rake (~> 13.2)
48
+ rubocop (~> 0.93.1)
49
+ rubocop-minitest (~> 0.27.0)
50
+ yard (~> 0.9.36)
48
51
 
49
52
  BUNDLED WITH
50
- 2.2.17
53
+ 2.5.4
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
@@ -47,7 +47,7 @@ module BlizzardApi
47
47
 
48
48
  return "static-#{version}#{region}" if options[:namespace].eql? :static
49
49
 
50
- return "profile-#{region}" if options[:namespace].eql? :profile
50
+ return "profile-#{version}#{region}" if options[:namespace].eql? :profile
51
51
 
52
52
  raise ArgumentError, 'Invalid namespace scope'
53
53
  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.1'
5
+ VERSION = '4.0.0'
6
6
  end
@@ -13,7 +13,7 @@ module BlizzardApi
13
13
  setup 'token', :dynamic, CACHE_HOUR
14
14
 
15
15
  def get
16
- raise BlizzardApi::ApiException, 'This endpoint does not have a index method'
16
+ raise BlizzardApi::ApiException, 'This endpoint does not have a get method'
17
17
  end
18
18
  end
19
19
  end
data/lib/blizzard_api.rb CHANGED
@@ -19,8 +19,8 @@ module BlizzardApi
19
19
  extend Configuration
20
20
 
21
21
  def self.redis_connection
22
- return nil unless use_cache
22
+ return nil unless use_cache?
23
23
 
24
- @redis_connection ||= Redis.new(host: redis_host, port: redis_port, db: redis_database)
24
+ @redis_connection ||= Redis.new(url: BlizzardApi.redis_url)
25
25
  end
26
26
  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.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Schiavo
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-21 00:00:00.000000000 Z
11
+ date: 2024-04-29 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
@@ -210,12 +220,11 @@ homepage: https://github.com/francis-schiavo/blizzard_api
210
220
  licenses:
211
221
  - MIT
212
222
  metadata:
213
- homepage_uri: https://github.com/francis-schiavo/blizzard_api
214
223
  source_code_uri: https://github.com/francis-schiavo/blizzard_api
215
224
  bug_tracker_uri: https://github.com/francis-schiavo/blizzard_api/issues
216
225
  changelog_uri: https://github.com/francis-schiavo/blizzard_api/blob/master/CHANGELOG.md
217
226
  documentation_uri: https://rubydoc.info/gems/blizzard_api
218
- post_install_message:
227
+ post_install_message:
219
228
  rdoc_options: []
220
229
  require_paths:
221
230
  - lib
@@ -223,15 +232,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
232
  requirements:
224
233
  - - ">="
225
234
  - !ruby/object:Gem::Version
226
- version: 2.7.2
235
+ version: '3.0'
227
236
  required_rubygems_version: !ruby/object:Gem::Requirement
228
237
  requirements:
229
238
  - - ">="
230
239
  - !ruby/object:Gem::Version
231
240
  version: '0'
232
241
  requirements: []
233
- rubygems_version: 3.3.7
234
- signing_key:
242
+ rubygems_version: 3.5.3
243
+ signing_key:
235
244
  specification_version: 4
236
245
  summary: Unofficial Ruby client for Blizzard Entertainment API
237
246
  test_files: []
@@ -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__)