blizzard_api 0.5.6 → 0.6.3

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -1
  3. data/.rubocop.yml +1 -1
  4. data/CHANGELOG.md +18 -0
  5. data/Gemfile.lock +6 -2
  6. data/blizzard_api.gemspec +2 -1
  7. data/lib/blizzard_api/configuration.rb +10 -34
  8. data/lib/blizzard_api/diablo/community/act.rb +2 -2
  9. data/lib/blizzard_api/diablo/community/artisan.rb +2 -2
  10. data/lib/blizzard_api/diablo/community/character.rb +2 -2
  11. data/lib/blizzard_api/diablo/community/follower.rb +1 -1
  12. data/lib/blizzard_api/diablo/community/item.rb +1 -1
  13. data/lib/blizzard_api/diablo/community/item_type.rb +2 -2
  14. data/lib/blizzard_api/diablo/community/profile.rb +4 -4
  15. data/lib/blizzard_api/diablo/game_data/generic_data_endpoint.rb +3 -3
  16. data/lib/blizzard_api/hearthstone/game_data/back.rb +1 -1
  17. data/lib/blizzard_api/hearthstone/game_data/card.rb +2 -2
  18. data/lib/blizzard_api/hearthstone/game_data/generic_data_endpoint.rb +2 -2
  19. data/lib/blizzard_api/request.rb +24 -7
  20. data/lib/blizzard_api/starcraft.rb +1 -1
  21. data/lib/blizzard_api/starcraft/community/account.rb +1 -1
  22. data/lib/blizzard_api/starcraft/community/ladder.rb +2 -2
  23. data/lib/blizzard_api/starcraft/community/legacy.rb +3 -4
  24. data/lib/blizzard_api/starcraft/community/profile.rb +5 -5
  25. data/lib/blizzard_api/starcraft/game_data/league.rb +1 -1
  26. data/lib/blizzard_api/version.rb +1 -1
  27. data/lib/blizzard_api/wow/game_data/achievement.rb +3 -3
  28. data/lib/blizzard_api/wow/game_data/auction.rb +20 -2
  29. data/lib/blizzard_api/wow/game_data/azerite_essence.rb +1 -1
  30. data/lib/blizzard_api/wow/game_data/covenant.rb +5 -5
  31. data/lib/blizzard_api/wow/game_data/creature.rb +13 -7
  32. data/lib/blizzard_api/wow/game_data/generic_data_endpoint.rb +20 -8
  33. data/lib/blizzard_api/wow/game_data/guild_crest.rb +4 -2
  34. data/lib/blizzard_api/wow/game_data/item.rb +10 -6
  35. data/lib/blizzard_api/wow/game_data/journal.rb +8 -8
  36. data/lib/blizzard_api/wow/game_data/modified_crafting.rb +4 -4
  37. data/lib/blizzard_api/wow/game_data/mythic_keystone.rb +6 -6
  38. data/lib/blizzard_api/wow/game_data/mythic_keystone_affix.rb +1 -1
  39. data/lib/blizzard_api/wow/game_data/mythic_keystone_leaderboard.rb +2 -2
  40. data/lib/blizzard_api/wow/game_data/mythic_raid_leaderboard.rb +1 -1
  41. data/lib/blizzard_api/wow/game_data/pet.rb +4 -4
  42. data/lib/blizzard_api/wow/game_data/playable_class.rb +10 -8
  43. data/lib/blizzard_api/wow/game_data/playable_specialization.rb +8 -8
  44. data/lib/blizzard_api/wow/game_data/profession.rb +4 -4
  45. data/lib/blizzard_api/wow/game_data/pvp_season.rb +5 -3
  46. data/lib/blizzard_api/wow/game_data/pvp_tier.rb +1 -1
  47. data/lib/blizzard_api/wow/game_data/quest.rb +6 -6
  48. data/lib/blizzard_api/wow/game_data/reputation.rb +4 -4
  49. data/lib/blizzard_api/wow/game_data/spell.rb +1 -1
  50. data/lib/blizzard_api/wow/game_data/talent.rb +2 -2
  51. data/lib/blizzard_api/wow/game_data/tech_talent.rb +3 -3
  52. data/lib/blizzard_api/wow/game_data/wow_token.rb +1 -1
  53. data/lib/blizzard_api/wow/profile/character_profile.rb +27 -27
  54. data/lib/blizzard_api/wow/profile/guild.rb +5 -5
  55. data/lib/blizzard_api/wow/profile/profile.rb +6 -6
  56. data/lib/blizzard_api/wow/search/search_composer.rb +2 -2
  57. data/lib/blizzard_api/wow/search/search_request.rb +1 -1
  58. metadata +18 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b285d4489642a601b88964d4b1a150edde7e95fef456be3bf2ea03fa0bc2c7e9
4
- data.tar.gz: 8856431d0831292b61e54b7a558270bcb8c3288153490a20268057a00a91a505
3
+ metadata.gz: daa79d3a8860c6cfd5b600090627933b7b2710ade24d4c76099198741accff97
4
+ data.tar.gz: f98d1226d19bfb605aa65c5380f7d3891b0b3fa733b7f85f3e21ba0d92ba9ee9
5
5
  SHA512:
6
- metadata.gz: 98257842acc25c914dc2f1b3237b52ae52c6d197906c9c42b3a4ddca3fd54a25718bf61a15ed97155c330c9cad1ef0b2938dc266e4537da32d7e880b97b230a8
7
- data.tar.gz: a6f85d169c53bf0a9e671b07b73fbd21333bc1eb3457d4be9c5e47fae57be6a99083f575f91c112ca1dea8c89d9a1c7e073f8f7b54569421cf5a5de5e0faf349
6
+ metadata.gz: 97da96397847d2d55c09a1bf7fa8aa81fe828780b58dd4830635c06fcb4070799df4e271ffa92c2dd64e40caa5fe0ab78609a0cb3940abee8d91a73a09e3f156
7
+ data.tar.gz: 95cd4500e97f933fdd29ac2005524a3b1cb8b5283b82a61dd737a9f04bfaf6206dbc32869c95ff9ca95c72efebb8e3fb6d702126fad41a6f058cd81d88b4f173
@@ -10,7 +10,7 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
12
12
  with:
13
- ruby-version: 2.6
13
+ ruby-version: 3.0.0-preview1
14
14
  - name: Install dependencies
15
15
  run: bundle install
16
16
  - name: Run tests
data/.rubocop.yml CHANGED
@@ -11,7 +11,7 @@ Metrics/AbcSize:
11
11
  Max: 20
12
12
 
13
13
  AllCops:
14
- TargetRubyVersion: 2.5
14
+ TargetRubyVersion: 2.7
15
15
  NewCops: enable
16
16
  Exclude:
17
17
  - 'vendor/**/*'
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 0.6.3**
4
+
5
+ Fixed argument propagation in some profile methods.
6
+
7
+ **Version 0.6.2**
8
+
9
+ Fixed an encoding problem on search endpoints.
10
+
11
+ **Version 0.6.1**
12
+
13
+ Added support for TBCC and Classice Era endpoints.
14
+
15
+ **Version 0.6.0**
16
+
17
+ Upgraded gem dependencies and refactored the code to support Ruby 3.0.0
18
+ Required ruby version upgraded to 2.7.2
19
+ Added concurrency to all WoW game data *complete* methods. Default of 4 threads. Should be close to # of threads available.
20
+
3
21
  **Version 0.5.6**
4
22
 
5
23
  Upgrade gem dependencies to fix a security vulnerability
data/Gemfile.lock CHANGED
@@ -1,14 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- blizzard_api (0.5.6)
4
+ blizzard_api (0.6.3)
5
5
  redis (~> 4.1, >= 4.1.0)
6
+ thwait (~> 0.2.0)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  ast (2.4.2)
11
12
  dotenv (2.7.6)
13
+ e2mmap (0.1.0)
12
14
  minitest (5.14.4)
13
15
  parallel (1.20.1)
14
16
  parser (3.0.1.1)
@@ -30,6 +32,8 @@ GEM
30
32
  rubocop-ast (1.5.0)
31
33
  parser (>= 3.0.1.1)
32
34
  ruby-progressbar (1.11.0)
35
+ thwait (0.2.0)
36
+ e2mmap
33
37
  unicode-display_width (1.7.0)
34
38
  yard (0.9.26)
35
39
 
@@ -45,4 +49,4 @@ DEPENDENCIES
45
49
  yard
46
50
 
47
51
  BUNDLED WITH
48
- 2.1.4
52
+ 2.2.17
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.5'
8
+ spec.required_ruby_version = '>= 2.7.2'
9
9
  spec.name = 'blizzard_api'
10
10
  spec.version = BlizzardApi::VERSION
11
11
  spec.authors = ['Francis Schiavo']
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.require_paths = ['lib']
36
36
 
37
37
  spec.add_runtime_dependency 'redis', '~> 4.1', '>= 4.1.0'
38
+ spec.add_runtime_dependency 'thwait', '~> 0.2.0'
38
39
 
39
40
  spec.add_development_dependency 'dotenv'
40
41
  spec.add_development_dependency 'minitest', '~> 5.0'
@@ -45,13 +45,12 @@ module BlizzardApi
45
45
  attr_accessor :redis_port
46
46
 
47
47
  ##
48
- # @!attribute format
49
- # Response format:
50
- # * *:raw* plain text (String)
51
- # * *:json* for native ruby json (Array).
52
- # * Any other value *OpenStruct* will be used.
53
- # @return [Symbol] Response format.
54
- attr_accessor :format
48
+ #
49
+ # @!attribute concurrency
50
+ # How many threads to use for WoW game data `complete` payloads. Defaults to 4.
51
+ # Should be set to the amount of available cores on the system.
52
+ # @return [Integer] Concurrency
53
+ attr_writer :concurrency
55
54
 
56
55
  ##
57
56
  # @!attribute access_token
@@ -59,33 +58,6 @@ module BlizzardApi
59
58
  # @return [String] Access token.
60
59
  attr_accessor :access_token
61
60
 
62
- ##
63
- # @!attribute icons_directory
64
- # Icons directory.
65
- # This directory stores icons for many World of Warcraft endpoints.
66
- # @return [String] icons_directory
67
- attr_accessor :wow_icons_directory
68
-
69
- ##
70
- # @!attribute guild_emblem_directory
71
- # Guild crest images directory. Some sub directories will be created.
72
- # @see https://develop.battle.net/access/clients
73
- # @return [String] Guild crest directory
74
- attr_accessor :wow_guild_crest_directory
75
-
76
- ##
77
- # @!attribute wow_character_profile_directory
78
- # This directory stores images for World of Warcraft character profiles. Sub directories will be created for
79
- # each realm and character.
80
- # @return [String] Character profile media directory
81
- attr_accessor :wow_character_profile_directory
82
-
83
- ##
84
- # @!attribute wow_npc_directory
85
- # This directory stores images for World of Warcraft NPCs and creatures.
86
- # @return [String] NPCs media directory
87
- attr_accessor :wow_npc_directory
88
-
89
61
  ##
90
62
  # This method return the singleton instance of the configuration module. Use this to initialize the default values
91
63
  # and options.
@@ -110,5 +82,9 @@ module BlizzardApi
110
82
  def configure
111
83
  yield self
112
84
  end
85
+
86
+ def concurrency
87
+ @concurrency ||= 4
88
+ end
113
89
  end
114
90
  end
@@ -17,7 +17,7 @@ module BlizzardApi
17
17
  #
18
18
  # @!macro response
19
19
  def index(**options)
20
- api_request "#{base_url(:community)}/data/act", { ttl: CACHE_TRIMESTER }.merge(options)
20
+ api_request "#{base_url(:community)}/data/act", **{ ttl: CACHE_TRIMESTER }.merge(options)
21
21
  end
22
22
 
23
23
  ##
@@ -28,7 +28,7 @@ module BlizzardApi
28
28
  #
29
29
  # @!macro response
30
30
  def get(id, **options)
31
- api_request "#{base_url(:community)}/data/act/#{id}", { ttl: CACHE_TRIMESTER }.merge(options)
31
+ api_request "#{base_url(:community)}/data/act/#{id}", **{ ttl: CACHE_TRIMESTER }.merge(options)
32
32
  end
33
33
  end
34
34
  end
@@ -18,7 +18,7 @@ module BlizzardApi
18
18
  #
19
19
  # @!macro response
20
20
  def get(artisan_slug, **options)
21
- api_request "#{base_url(:community)}/data/artisan/#{artisan_slug}", { ttl: CACHE_TRIMESTER }.merge(options)
21
+ api_request "#{base_url(:community)}/data/artisan/#{artisan_slug}", **{ ttl: CACHE_TRIMESTER }.merge(options)
22
22
  end
23
23
 
24
24
  ##
@@ -31,7 +31,7 @@ module BlizzardApi
31
31
  # @!macro response
32
32
  def recipe(artisan_slug, recipe_slug, **options)
33
33
  opts = { ttl: CACHE_TRIMESTER }.merge(options)
34
- api_request "#{base_url(:community)}/data/artisan/#{artisan_slug}/recipe/#{recipe_slug}", opts
34
+ api_request "#{base_url(:community)}/data/artisan/#{artisan_slug}/recipe/#{recipe_slug}", **opts
35
35
  end
36
36
  end
37
37
  end
@@ -18,7 +18,7 @@ module BlizzardApi
18
18
  #
19
19
  # @!macro response
20
20
  def get(class_slug, **options)
21
- api_request "#{base_url(:community)}/data/hero/#{class_slug}", { ttl: CACHE_TRIMESTER }.merge(options)
21
+ api_request "#{base_url(:community)}/data/hero/#{class_slug}", **{ ttl: CACHE_TRIMESTER }.merge(options)
22
22
  end
23
23
 
24
24
  ##
@@ -31,7 +31,7 @@ module BlizzardApi
31
31
  # @!macro response
32
32
  def skill(class_slug, skill_slug, **options)
33
33
  opts = { ttl: CACHE_TRIMESTER }.merge(options)
34
- api_request "#{base_url(:community)}/data/hero/#{class_slug}/skill/#{skill_slug}", opts
34
+ api_request "#{base_url(:community)}/data/hero/#{class_slug}/skill/#{skill_slug}", **opts
35
35
  end
36
36
  end
37
37
  end
@@ -18,7 +18,7 @@ module BlizzardApi
18
18
  #
19
19
  # @!macro response
20
20
  def get(follower_slug, **options)
21
- api_request "#{base_url(:community)}/data/follower/#{follower_slug}", { ttl: CACHE_TRIMESTER }.merge(options)
21
+ api_request "#{base_url(:community)}/data/follower/#{follower_slug}", **{ ttl: CACHE_TRIMESTER }.merge(options)
22
22
  end
23
23
  end
24
24
  end
@@ -18,7 +18,7 @@ module BlizzardApi
18
18
  #
19
19
  # @!macro response
20
20
  def get(item_slug_and_id, **options)
21
- api_request "#{base_url(:community)}/data/item/#{item_slug_and_id}", { ttl: CACHE_TRIMESTER }.merge(options)
21
+ api_request "#{base_url(:community)}/data/item/#{item_slug_and_id}", **{ ttl: CACHE_TRIMESTER }.merge(options)
22
22
  end
23
23
  end
24
24
  end
@@ -17,7 +17,7 @@ module BlizzardApi
17
17
  #
18
18
  # @!macro response
19
19
  def index(**options)
20
- api_request "#{base_url(:community)}/data/item-type", { ttl: CACHE_TRIMESTER }.merge(options)
20
+ api_request "#{base_url(:community)}/data/item-type", **{ ttl: CACHE_TRIMESTER }.merge(options)
21
21
  end
22
22
 
23
23
  ##
@@ -28,7 +28,7 @@ module BlizzardApi
28
28
  #
29
29
  # @!macro response
30
30
  def get(item_type_slug, **options)
31
- api_request "#{base_url(:community)}/data/item-type/#{item_type_slug}", { ttl: CACHE_TRIMESTER }.merge(options)
31
+ api_request "#{base_url(:community)}/data/item-type/#{item_type_slug}", **{ ttl: CACHE_TRIMESTER }.merge(options)
32
32
  end
33
33
  end
34
34
  end
@@ -22,7 +22,7 @@ module BlizzardApi
22
22
  # @see https://develop.battle.net/documentation/guides/using-oauth/authorization-code-flow
23
23
  def index(battletag, oauth_token, **options)
24
24
  opts = { access_token: oauth_token, ttl: CACHE_TRIMESTER }.merge(options)
25
- api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/", opts
25
+ api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/", **opts
26
26
  end
27
27
 
28
28
  ##
@@ -38,7 +38,7 @@ module BlizzardApi
38
38
  # @see https://develop.battle.net/documentation/guides/using-oauth/authorization-code-flow
39
39
  def hero(battletag, oauth_token, hero_id, **options)
40
40
  opts = { access_token: oauth_token, ttl: CACHE_TRIMESTER }.merge(options)
41
- api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/hero/#{hero_id}", opts
41
+ api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/hero/#{hero_id}", **opts
42
42
  end
43
43
 
44
44
  ##
@@ -54,7 +54,7 @@ module BlizzardApi
54
54
  # @see https://develop.battle.net/documentation/guides/using-oauth/authorization-code-flow
55
55
  def hero_items(battletag, oauth_token, hero_id, **options)
56
56
  opts = { access_token: oauth_token, ttl: CACHE_TRIMESTER }.merge(options)
57
- api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/hero/#{hero_id}/items", opts
57
+ api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/hero/#{hero_id}/items", **opts
58
58
  end
59
59
 
60
60
  ##
@@ -70,7 +70,7 @@ module BlizzardApi
70
70
  # @see https://develop.battle.net/documentation/guides/using-oauth/authorization-code-flow
71
71
  def hero_follower_items(battletag, oauth_token, hero_id, **options)
72
72
  opts = { access_token: oauth_token, ttl: CACHE_TRIMESTER }.merge(options)
73
- api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/hero/#{hero_id}/follower-items", opts
73
+ api_request "#{base_url(:community)}/profile/#{parse_battle_tag(battletag)}/hero/#{hero_id}/follower-items", **opts
74
74
  end
75
75
 
76
76
  private
@@ -17,7 +17,7 @@ module BlizzardApi
17
17
  #
18
18
  # @!macro response
19
19
  def index(**options)
20
- api_request "#{base_url(:game_data)}/#{@endpoint}/", default_options.merge(options)
20
+ api_request "#{base_url(:game_data)}/#{@endpoint}/", **default_options.merge(options)
21
21
  end
22
22
 
23
23
  ##
@@ -28,7 +28,7 @@ module BlizzardApi
28
28
  #
29
29
  # @!macro response
30
30
  def get(id, **options)
31
- api_request "#{base_url(:game_data)}/#{@endpoint}/#{id}", default_options.merge(options)
31
+ api_request "#{base_url(:game_data)}/#{@endpoint}/#{id}", **default_options.merge(options)
32
32
  end
33
33
 
34
34
  ##
@@ -41,7 +41,7 @@ module BlizzardApi
41
41
  # @!macro response
42
42
  def leaderboard(id, leaderboard_id, **options)
43
43
  opts = default_options.merge(options)
44
- api_request "#{base_url(:game_data)}/#{@endpoint}/#{id}/leaderboard/#{leaderboard_id}", opts
44
+ api_request "#{base_url(:game_data)}/#{@endpoint}/#{id}/leaderboard/#{leaderboard_id}", **opts
45
45
  end
46
46
 
47
47
  protected
@@ -39,7 +39,7 @@ module BlizzardApi
39
39
  def search(search_options = {}, **options)
40
40
  validate_search_options search_options if options.include? :validate_fields
41
41
 
42
- api_request "#{base_url(:community)}/cardbacks", default_options.merge(options).merge(search_options)
42
+ api_request "#{base_url(:community)}/cardbacks", **default_options.merge(options).merge(search_options)
43
43
  end
44
44
 
45
45
  protected
@@ -75,7 +75,7 @@ module BlizzardApi
75
75
  def search(search_options = {}, **options)
76
76
  validate_search_options search_options if options.include? :validate_fields
77
77
 
78
- api_request "#{base_url(:community)}/cards", default_options.merge(options).merge(search_options)
78
+ api_request "#{base_url(:community)}/cards", **default_options.merge(options).merge(search_options)
79
79
  end
80
80
 
81
81
  ##
@@ -91,7 +91,7 @@ module BlizzardApi
91
91
  #
92
92
  # @!macro response
93
93
  def get(id_or_slug, game_mode = 'constructed', **options)
94
- super id_or_slug, { gameMode: game_mode }.merge(options)
94
+ super id_or_slug, **{ gameMode: game_mode }.merge(options)
95
95
  end
96
96
 
97
97
  protected
@@ -21,7 +21,7 @@ module BlizzardApi
21
21
  #
22
22
  # @!macro response
23
23
  def index(**options)
24
- api_request "#{base_url(:community)}/#{@endpoint}/", default_options.merge(options)
24
+ api_request "#{base_url(:community)}/#{@endpoint}/", **default_options.merge(options)
25
25
  end
26
26
 
27
27
  ##
@@ -32,7 +32,7 @@ module BlizzardApi
32
32
  #
33
33
  # @!macro response
34
34
  def get(id, **options)
35
- api_request "#{base_url(:community)}/#{@endpoint}/#{id}", default_options.merge(options)
35
+ api_request "#{base_url(:community)}/#{@endpoint}/#{id}", **default_options.merge(options)
36
36
  end
37
37
 
38
38
  protected
@@ -9,6 +9,8 @@
9
9
  # @option options [Boolean] :ignore_cache If set to true the request will not use the cache
10
10
  # @option options [Integer] :ttl Override the default time (in seconds) a request should be cached
11
11
  # @option options [DateTime] :since Adds the If-modified-since headers. Will always ignore cache when set.
12
+ # @option options [Integer] :concurrency How many threads to use for complete sets of data.
13
+ # BEWARE: Might cause 429 responses, in this case lower the number.
12
14
 
13
15
  ##
14
16
  # @!macro [new] regions
@@ -83,16 +85,31 @@ module BlizzardApi
83
85
  format BASE_URLS[scope], region, @game
84
86
  end
85
87
 
88
+ ##
89
+ # Returns a valid version namespace
90
+ #
91
+ # @param [Hash] options A hash containing a valid namespace key
92
+ def endpoint_version(options)
93
+ if options.key? :classic
94
+ 'classic-'
95
+ elsif options.key? :classic1x
96
+ 'classic1x-'
97
+ else
98
+ ''
99
+ end
100
+ end
101
+
86
102
  ##
87
103
  # Returns a valid namespace string for consuming the api endpoints
88
104
  #
89
105
  # @param [Hash] options A hash containing the namespace key
90
106
  def endpoint_namespace(options)
107
+ version = endpoint_version(options)
91
108
  case options[:namespace]
92
109
  when :dynamic
93
- options.include?(:classic) ? "dynamic-classic-#{region}" : "dynamic-#{region}"
110
+ "dynamic-#{version}#{region}"
94
111
  when :static
95
- options.include?(:classic) ? "static-classic-#{region}" : "static-#{region}"
112
+ "static-#{version}#{region}"
96
113
  when :profile
97
114
  "profile-#{region}"
98
115
  else
@@ -124,7 +141,7 @@ module BlizzardApi
124
141
  # If data was found that means cache is enabled and valid
125
142
  return JSON.parse(data, symbolize_names: true) if data
126
143
 
127
- response = consume_api parsed_url, options
144
+ response = consume_api parsed_url, **options
128
145
 
129
146
  save_in_cache parsed_url.to_s, response.body, options[:ttl] || CACHE_DAY if using_cache? options
130
147
 
@@ -134,9 +151,9 @@ module BlizzardApi
134
151
  response_data
135
152
  end
136
153
 
137
- def api_request(uri, query_string = {})
154
+ def api_request(uri, **query_string)
138
155
  # List of request options
139
- options_key = %i[ignore_cache ttl format access_token namespace classic headers since]
156
+ options_key = %i[ignore_cache ttl format access_token namespace classic classic1x headers since]
140
157
 
141
158
  # Separates request options from api fields and options. Any user-defined option will be treated as api field.
142
159
  options = query_string.select { |k, _v| query_string.delete(k) || true if options_key.include? k }
@@ -150,7 +167,7 @@ module BlizzardApi
150
167
  uri = uri.include?('?') ? "#{uri}&#{query_string}" : "#{uri}?#{query_string}"
151
168
  end
152
169
 
153
- request uri, options
170
+ request uri, **options
154
171
  end
155
172
 
156
173
  private
@@ -174,7 +191,7 @@ module BlizzardApi
174
191
  # Executes the request
175
192
  http.request(request).tap do |response|
176
193
  if mode.eql?(:regular) && ![200, 304].include?(response.code.to_i)
177
- raise BlizzardApi::ApiException.new 'Request failed', response.code.to_i
194
+ raise BlizzardApi::ApiException.new "Request failed with code '#{response.code}' details: #{response.to_hash}", response.code.to_i
178
195
  end
179
196
  end
180
197
  end