blizzard_api 0.5.6 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
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