blizzard_api 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +18 -8
- data/lib/blizzard_api/version.rb +1 -1
- data/lib/blizzard_api/wow.rb +0 -1
- data/lib/blizzard_api/wow/game_data/achievement.rb +0 -24
- data/lib/blizzard_api/wow/game_data/azerite_essence.rb +12 -0
- data/lib/blizzard_api/wow/game_data/guild.rb +8 -2
- data/lib/blizzard_api/wow/game_data/item.rb +12 -0
- data/lib/blizzard_api/wow/game_data/mythic_keystone.rb +1 -1
- data/lib/blizzard_api/wow/game_data/realm.rb +3 -1
- data/lib/blizzard_api/wow/profile/character_profile.rb +122 -16
- metadata +2 -3
- data/lib/blizzard_api/wow/community/character.rb +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef547d30cdbb5599ad187f0b222b94921c9597c89dba9c95ee96ab98f2083267
|
4
|
+
data.tar.gz: a5a62685e422fcd58735c894286f69781b5bdd546e0b8fedb9c3ca05c783de2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89bd6b397a46d2ad4f48b09f20bda65ac1b44d666d2e619fbfc11aa1f1eb18d79d000a56e76358b25ef521543ee532063697c696df74c9efc604855c787f9d12
|
7
|
+
data.tar.gz: 5d6bda03485f62b00e074aedc0d924d0c416e57f65bbf9b72c1dfeade0d4a7dc785bbbc2feb40c38f23ea7a794918de68d625cfa09a83fc10e8e904065622c91
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
Please view this file on the master branch, otherwise it may be outdated
|
2
2
|
|
3
|
+
**Version 0.2.5**
|
4
|
+
* Added two unreleased endpoints for character profile(`raid_progression` and `collections`).
|
5
|
+
* Added new WoW profile endpoints
|
6
|
+
* Added missing profile automated tests
|
7
|
+
|
3
8
|
**Version 0.2.4**
|
4
9
|
* Added new WoW profile endpoints: #2 https://us.battle.net/forums/en/bnet/topic/20772457051
|
5
10
|
* Added support for HearthStone: !1 (Thanks Bradyn Glines for implementing this)
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -88,8 +88,6 @@ Most **data** endpoints will have always 3 methods available `index`, `get` and
|
|
88
88
|
- index
|
89
89
|
- categories
|
90
90
|
- category :id
|
91
|
-
- character_achievement_index
|
92
|
-
- guild_achievement_index
|
93
91
|
- media :id
|
94
92
|
* Blizzard::Wow::ConnectedRealm
|
95
93
|
- index
|
@@ -168,6 +166,7 @@ Most **data** endpoints will have always 3 methods available `index`, `get` and
|
|
168
166
|
- index
|
169
167
|
- get :id
|
170
168
|
- complete
|
169
|
+
- status :realms
|
171
170
|
* Blizzard::Wow::Region
|
172
171
|
- index
|
173
172
|
- get :id
|
@@ -187,9 +186,11 @@ Most **data** endpoints will have always 3 methods available `index`, `get` and
|
|
187
186
|
- classes
|
188
187
|
- class :id
|
189
188
|
- subclass :class_id, :subclass_id
|
189
|
+
- media :id
|
190
190
|
* Blizzard::Wow::AzeriteEssence
|
191
191
|
- index
|
192
192
|
- get :id
|
193
|
+
- media :id
|
193
194
|
|
194
195
|
* Blizzard::Wow::Auction
|
195
196
|
- get :realm
|
@@ -199,10 +200,6 @@ Most **data** endpoints will have always 3 methods available `index`, `get` and
|
|
199
200
|
* Blizzard::Wow::Challenge
|
200
201
|
- realm_index
|
201
202
|
- region_index
|
202
|
-
* Blizzard::Wow::Character
|
203
|
-
- get :realm, :character, :fields
|
204
|
-
- get_keystone_profile :realm, :character, :user_token, :season
|
205
|
-
- get_user_characters :user_token
|
206
203
|
* Blizzard::Wow::Guild
|
207
204
|
- get :relam, :name, :fields
|
208
205
|
- rewards
|
@@ -219,11 +216,24 @@ Most **data** endpoints will have always 3 methods available `index`, `get` and
|
|
219
216
|
- index
|
220
217
|
- get :id
|
221
218
|
|
222
|
-
|
223
219
|
* BlizzardApi::Wow::CharacterProfile
|
224
|
-
-
|
220
|
+
- get_user_characters :user_token
|
221
|
+
- get :realm, :character, :fields
|
225
222
|
- pvp_summmary :realm, :character, :user_token
|
226
223
|
- pvp_bracket :realm, :character, :bracket, :user_token
|
224
|
+
- achievements :realm, :character
|
225
|
+
- appearance :realm, :character
|
226
|
+
- equipment :realm, :character
|
227
|
+
- media :realm, :character
|
228
|
+
- pvp_bracket :realm, :character, :bracket
|
229
|
+
- pvp_summary :realm, :character
|
230
|
+
- specializations :realm, :character
|
231
|
+
- statistics :realm, :character
|
232
|
+
- titles :realm, :character
|
233
|
+
- mythic_keystone_profile :realm, :character
|
234
|
+
- mythic_keystone_seasons :realm, :character
|
235
|
+
- collections :realm, :character (Not active yet on Blizzard servers)
|
236
|
+
- raid_progression :realm, :character (Not active yet on Blizzard servers)
|
227
237
|
|
228
238
|
### 4.2. Diablo III endpoints
|
229
239
|
|
data/lib/blizzard_api/version.rb
CHANGED
data/lib/blizzard_api/wow.rb
CHANGED
@@ -173,7 +173,6 @@ module BlizzardApi
|
|
173
173
|
require_relative 'wow/community/auction'
|
174
174
|
require_relative 'wow/community/boss'
|
175
175
|
require_relative 'wow/community/challenge'
|
176
|
-
require_relative 'wow/community/character'
|
177
176
|
require_relative 'wow/community/pvp'
|
178
177
|
require_relative 'wow/community/quest'
|
179
178
|
require_relative 'wow/community/recipe'
|
@@ -54,30 +54,6 @@ module BlizzardApi
|
|
54
54
|
api_request "#{endpoint_uri('category')}/#{id}", default_options.merge(options)
|
55
55
|
end
|
56
56
|
|
57
|
-
##
|
58
|
-
# Return a list of possible character achievements.
|
59
|
-
# This endpoint uses a community endpoint. It is recommended to use the new data endpoint using {#index}.
|
60
|
-
# @see https://us.battle.net/forums/en/bnet/topic/20771546990
|
61
|
-
#
|
62
|
-
# @!macro request_options
|
63
|
-
#
|
64
|
-
# @!macro response
|
65
|
-
def character_achievement_index(options = {})
|
66
|
-
api_request "#{base_url(:community)}/data/character/achievements", { ttl: CACHE_TRIMESTER }.merge(options)
|
67
|
-
end
|
68
|
-
|
69
|
-
##
|
70
|
-
# Return a list of possible guild achievements
|
71
|
-
# This endpoint uses a community endpoint. It is recommended to use the new data endpoint using {#index}.
|
72
|
-
# @see https://us.battle.net/forums/en/bnet/topic/20771546990
|
73
|
-
#
|
74
|
-
# @!macro request_options
|
75
|
-
#
|
76
|
-
# @!macro response
|
77
|
-
def guild_achievement_index(options = {})
|
78
|
-
api_request "#{base_url(:community)}/data/guild/achievements", { ttl: CACHE_TRIMESTER }.merge(options)
|
79
|
-
end
|
80
|
-
|
81
57
|
##
|
82
58
|
# Fetch media assets for the specified achievement
|
83
59
|
#
|
@@ -10,6 +10,18 @@ module BlizzardApi
|
|
10
10
|
# You can get an instance of this class using the default region as follows:
|
11
11
|
# api_instance = BlizzardApi::Wow.azerite_essence
|
12
12
|
class AzeriteEssence < Wow::GenericDataEndpoint
|
13
|
+
##
|
14
|
+
# Fetch media for one of the azerite essences listed by the {#index} using its *id*
|
15
|
+
#
|
16
|
+
# @param id [Integer] Azerite essence id
|
17
|
+
#
|
18
|
+
# @!macro request_options
|
19
|
+
#
|
20
|
+
# @!macro response
|
21
|
+
def media(id, options = {})
|
22
|
+
api_request "#{base_url(:media)}/azerite-essence/#{id}", default_options.merge(options)
|
23
|
+
end
|
24
|
+
|
13
25
|
protected
|
14
26
|
|
15
27
|
def endpoint_setup
|
@@ -12,7 +12,8 @@ module BlizzardApi
|
|
12
12
|
# api_instance = BlizzardApi::Wow.guild
|
13
13
|
class Guild < Wow::Request
|
14
14
|
# Valid fields for guild profile request
|
15
|
-
VALID_FIELDS = %w[achievements
|
15
|
+
VALID_FIELDS = %w[achievements achievementsCompleted achievementsCompletedTimestamp criteria criteriaCreated
|
16
|
+
criteriaQuantity criteriaTimestamp challenge members news].freeze
|
16
17
|
|
17
18
|
##
|
18
19
|
# Helper method for checking valid fields. Use this to validate an array of fields if you are not sure about their
|
@@ -84,11 +85,16 @@ module BlizzardApi
|
|
84
85
|
#
|
85
86
|
# @param realm [String] The guild realm's slug
|
86
87
|
# @param guild [String] The guild's name
|
87
|
-
#
|
88
88
|
# @!macro request_options
|
89
|
+
# @option options [Boolean] :use_community_endpoint If set to true, this method will call the community endpoint
|
90
|
+
# instead of the data endpoint https://develop.battle.net/documentation/api-reference/world-of-warcraft-community-api
|
89
91
|
#
|
90
92
|
# @!macro response
|
91
93
|
def achievements(realm, guild, options = {})
|
94
|
+
if options.include? :use_community_endpoint
|
95
|
+
return api_request "#{base_url(:community)}/data/guild/achievements", { ttl: CACHE_TRIMESTER }.merge(options)
|
96
|
+
end
|
97
|
+
|
92
98
|
guild_request realm, guild, options, 'achievements'
|
93
99
|
end
|
94
100
|
|
@@ -91,6 +91,18 @@ module BlizzardApi
|
|
91
91
|
api_request "#{endpoint_uri('class')}/#{id}/item-subclass/#{subclass_id}", default_options.merge(options)
|
92
92
|
end
|
93
93
|
|
94
|
+
##
|
95
|
+
# Fetch media for an item using its *id*
|
96
|
+
#
|
97
|
+
# @param id [Integer] Item id
|
98
|
+
#
|
99
|
+
# @!macro request_options
|
100
|
+
#
|
101
|
+
# @!macro response
|
102
|
+
def media(id, options = {})
|
103
|
+
api_request "#{base_url(:media)}/item/#{id}", default_options.merge(options)
|
104
|
+
end
|
105
|
+
|
94
106
|
protected
|
95
107
|
|
96
108
|
def endpoint_setup
|
@@ -14,10 +14,12 @@ module BlizzardApi
|
|
14
14
|
# This method is actually located at the community scope, but included here because of its relevance
|
15
15
|
# @see https://develop.battle.net/documentation/api-reference/world-of-warcraft-community-api
|
16
16
|
#
|
17
|
+
# @param realms [Array<String>] An optional list of realm-slugs to filter results
|
17
18
|
# @!macro request_options
|
18
19
|
#
|
19
20
|
# @!macro response
|
20
|
-
def status(options = {})
|
21
|
+
def status(realms = [], options = {})
|
22
|
+
options[:realms] = realms.map(&:string_to_slug).join(',') if realms.count.positive?
|
21
23
|
api_request "#{base_url(:community)}/realm/status", { ttl: CACHE_MINUTE }.merge(options)
|
22
24
|
end
|
23
25
|
|
@@ -10,6 +10,79 @@ module BlizzardApi
|
|
10
10
|
# You can get an instance of this class using the default region as follows:
|
11
11
|
# api_instance = BlizzardApi::Wow.achievement
|
12
12
|
class CharacterProfile < Wow::Request
|
13
|
+
# Valid fields for character profile requests
|
14
|
+
VALID_FIELDS = %w[
|
15
|
+
achievements
|
16
|
+
appearance
|
17
|
+
feed
|
18
|
+
guild
|
19
|
+
hunterPets
|
20
|
+
items
|
21
|
+
mounts
|
22
|
+
pets
|
23
|
+
petSlots
|
24
|
+
professions
|
25
|
+
progression
|
26
|
+
pvp
|
27
|
+
quests
|
28
|
+
reputation
|
29
|
+
statistics
|
30
|
+
stats
|
31
|
+
talents
|
32
|
+
titles
|
33
|
+
audit
|
34
|
+
].freeze
|
35
|
+
|
36
|
+
##
|
37
|
+
# Helper method for checking valid fields. Use this to validate an array of fields if you are not sure about their
|
38
|
+
# names.
|
39
|
+
#
|
40
|
+
# @param fields [Array<String>] Array containing desired fields to include
|
41
|
+
#
|
42
|
+
# @raise ArgumentError
|
43
|
+
def validate_fields(fields)
|
44
|
+
fields.each do |field|
|
45
|
+
raise ArgumentError, "Unrecognized field #{field}" unless VALID_FIELDS.include? field
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Return a list containing all WoW characters of a BNet account
|
51
|
+
#
|
52
|
+
# @note This endpoint requires a user token obtained through the user authorization flow
|
53
|
+
# @see https://develop.battle.net/documentation/guides/using-oauth/authorization-code-flow
|
54
|
+
#
|
55
|
+
# @param user_token [String] A token obtained by the authorization flow. See link below.
|
56
|
+
# @!macro request_options
|
57
|
+
#
|
58
|
+
# @!macro response
|
59
|
+
def get_user_characters(user_token, options = {})
|
60
|
+
opts = { ttl: CACHE_HOUR, access_token: user_token }.merge(options)
|
61
|
+
api_request "#{base_url(:community)}/user/characters", opts
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Return character achievements
|
66
|
+
#
|
67
|
+
# @see https://develop.battle.net/documentation/api-reference/world-of-warcraft-profile-api
|
68
|
+
#
|
69
|
+
# @param realm [String] The character realm's slug
|
70
|
+
# @param character [String] The character name
|
71
|
+
# @param fields [Array<String>] An array containing all the fields you want to be included in the response. Only
|
72
|
+
# used for community endpoint.
|
73
|
+
# @!macro request_options
|
74
|
+
# @option options [Boolean] :use_community_endpoint If set to true, this method will call the community endpoint
|
75
|
+
# instead of the data endpoint https://develop.battle.net/documentation/api-reference/world-of-warcraft-community-api
|
76
|
+
#
|
77
|
+
# @!macro response
|
78
|
+
def get(realm, character, fields = [], options = {})
|
79
|
+
return character_request realm, character, options unless options.include? :use_community_endpoint
|
80
|
+
|
81
|
+
validate_fields fields if options.include? :validate_fields
|
82
|
+
opts = { ttl: CACHE_DAY, fields: fields.join(',') }.merge(options)
|
83
|
+
api_request "#{base_url(:community)}/character/#{CGI.escape(realm)}/#{CGI.escape(character)}", opts
|
84
|
+
end
|
85
|
+
|
13
86
|
##
|
14
87
|
# Return character achievements
|
15
88
|
#
|
@@ -18,10 +91,14 @@ module BlizzardApi
|
|
18
91
|
# @param realm [String] The character realm's slug
|
19
92
|
# @param character [String] The character name
|
20
93
|
# @!macro request_options
|
94
|
+
# @option options [Boolean] :use_community_endpoint If set to true, this method will call the community endpoint
|
95
|
+
# instead of the data endpoint https://develop.battle.net/documentation/api-reference/world-of-warcraft-community-api
|
21
96
|
#
|
22
97
|
# @!macro response
|
23
98
|
def achievements(realm, character, options = {})
|
24
|
-
|
99
|
+
return character_request realm, character, options, 'achievements' unless options.include? :use_community_endpoint
|
100
|
+
|
101
|
+
api_request "#{base_url(:community)}/data/guild/achievements", { ttl: CACHE_TRIMESTER }.merge(options)
|
25
102
|
end
|
26
103
|
|
27
104
|
##
|
@@ -35,7 +112,7 @@ module BlizzardApi
|
|
35
112
|
#
|
36
113
|
# @!macro response
|
37
114
|
def appearance(realm, character, options = {})
|
38
|
-
|
115
|
+
character_request realm, character, options, 'appearance'
|
39
116
|
end
|
40
117
|
|
41
118
|
##
|
@@ -49,7 +126,7 @@ module BlizzardApi
|
|
49
126
|
#
|
50
127
|
# @!macro response
|
51
128
|
def equipment(realm, character, options = {})
|
52
|
-
|
129
|
+
character_request realm, character, options, 'equipment'
|
53
130
|
end
|
54
131
|
|
55
132
|
##
|
@@ -63,7 +140,7 @@ module BlizzardApi
|
|
63
140
|
#
|
64
141
|
# @!macro response
|
65
142
|
def media(realm, character, options = {})
|
66
|
-
|
143
|
+
character_request realm, character, options, 'character-media'
|
67
144
|
end
|
68
145
|
|
69
146
|
##
|
@@ -78,7 +155,7 @@ module BlizzardApi
|
|
78
155
|
#
|
79
156
|
# @!macro response
|
80
157
|
def pvp_bracket(realm, character, bracket, options = {})
|
81
|
-
|
158
|
+
character_request realm, character, options, "pvp-bracket/#{bracket}"
|
82
159
|
end
|
83
160
|
|
84
161
|
##
|
@@ -92,7 +169,7 @@ module BlizzardApi
|
|
92
169
|
#
|
93
170
|
# @!macro response
|
94
171
|
def pvp_summary(realm, character, options = {})
|
95
|
-
|
172
|
+
character_request realm, character, options, 'pvp-summary'
|
96
173
|
end
|
97
174
|
|
98
175
|
##
|
@@ -106,7 +183,7 @@ module BlizzardApi
|
|
106
183
|
#
|
107
184
|
# @!macro response
|
108
185
|
def specializations(realm, character, options = {})
|
109
|
-
|
186
|
+
character_request realm, character, options, 'specializations'
|
110
187
|
end
|
111
188
|
|
112
189
|
##
|
@@ -120,7 +197,7 @@ module BlizzardApi
|
|
120
197
|
#
|
121
198
|
# @!macro response
|
122
199
|
def statistics(realm, character, options = {})
|
123
|
-
|
200
|
+
character_request realm, character, options, 'statistics'
|
124
201
|
end
|
125
202
|
|
126
203
|
##
|
@@ -134,7 +211,7 @@ module BlizzardApi
|
|
134
211
|
#
|
135
212
|
# @!macro response
|
136
213
|
def titles(realm, character, options = {})
|
137
|
-
|
214
|
+
character_request realm, character, options, 'titles'
|
138
215
|
end
|
139
216
|
|
140
217
|
##
|
@@ -147,8 +224,8 @@ module BlizzardApi
|
|
147
224
|
# @!macro request_options
|
148
225
|
#
|
149
226
|
# @!macro response
|
150
|
-
def
|
151
|
-
|
227
|
+
def mythic_keystone_profile(realm, character, options = {})
|
228
|
+
character_request realm, character, options, 'mythic-keystone-profile'
|
152
229
|
end
|
153
230
|
|
154
231
|
##
|
@@ -162,9 +239,36 @@ module BlizzardApi
|
|
162
239
|
# @!macro request_options
|
163
240
|
#
|
164
241
|
# @!macro response
|
165
|
-
def
|
166
|
-
|
167
|
-
|
242
|
+
def mythic_keystone_seasons(realm, character, season = nil, options = {})
|
243
|
+
character_request realm, character, options, "mythic-keystone-profile/season/#{season}"
|
244
|
+
end
|
245
|
+
|
246
|
+
##
|
247
|
+
# Return a character's collections
|
248
|
+
#
|
249
|
+
# @see https://develop.battle.net/documentation/api-reference/world-of-warcraft-profile-api
|
250
|
+
#
|
251
|
+
# @param realm [String] The character realm's slug
|
252
|
+
# @param character [String] The character name
|
253
|
+
# @!macro request_options
|
254
|
+
#
|
255
|
+
# @!macro response
|
256
|
+
def collections(realm, character, options = {})
|
257
|
+
character_request realm, character, options, 'collections'
|
258
|
+
end
|
259
|
+
|
260
|
+
##
|
261
|
+
# Return a character's raid progression
|
262
|
+
#
|
263
|
+
# @see https://develop.battle.net/documentation/api-reference/world-of-warcraft-profile-api
|
264
|
+
#
|
265
|
+
# @param realm [String] The character realm's slug
|
266
|
+
# @param character [String] The character name
|
267
|
+
# @!macro request_options
|
268
|
+
#
|
269
|
+
# @!macro response
|
270
|
+
def raid_progression(realm, character, options = {})
|
271
|
+
character_request realm, character, options, 'raid-progression'
|
168
272
|
end
|
169
273
|
|
170
274
|
private
|
@@ -175,8 +279,10 @@ module BlizzardApi
|
|
175
279
|
opts
|
176
280
|
end
|
177
281
|
|
178
|
-
def
|
179
|
-
"#{base_url(:profile)}/character/#{CGI.escape(realm)}/#{CGI.escape(character)}"
|
282
|
+
def character_request(realm, character, options = {}, variant = nil)
|
283
|
+
uri = "#{base_url(:profile)}/character/#{CGI.escape(realm.downcase)}/#{CGI.escape(character.downcase)}"
|
284
|
+
uri += "/#{variant}" if variant
|
285
|
+
api_request uri, default_options.merge(options)
|
180
286
|
end
|
181
287
|
end
|
182
288
|
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: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francis Schiavo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -154,7 +154,6 @@ files:
|
|
154
154
|
- lib/blizzard_api/wow/community/auction.rb
|
155
155
|
- lib/blizzard_api/wow/community/boss.rb
|
156
156
|
- lib/blizzard_api/wow/community/challenge.rb
|
157
|
-
- lib/blizzard_api/wow/community/character.rb
|
158
157
|
- lib/blizzard_api/wow/community/pvp.rb
|
159
158
|
- lib/blizzard_api/wow/community/quest.rb
|
160
159
|
- lib/blizzard_api/wow/community/recipe.rb
|
@@ -1,82 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module BlizzardApi
|
4
|
-
module Wow
|
5
|
-
##
|
6
|
-
# This class allows access to World of Warcraft character data
|
7
|
-
#
|
8
|
-
# @see https://develop.battle.net/documentation/api-reference/world-of-warcraft-community-api
|
9
|
-
#
|
10
|
-
# You can get an instance of this class using the default region as follows:
|
11
|
-
# api_instance = BlizzardApi::Wow.character
|
12
|
-
class Character < Wow::Request
|
13
|
-
# Valid fields for character profile requests
|
14
|
-
VALID_FIELDS = %w[
|
15
|
-
achievements
|
16
|
-
appearance
|
17
|
-
feed
|
18
|
-
guild
|
19
|
-
hunterPets
|
20
|
-
items
|
21
|
-
mounts
|
22
|
-
pets
|
23
|
-
petSlots
|
24
|
-
professions
|
25
|
-
progression
|
26
|
-
pvp
|
27
|
-
quests
|
28
|
-
reputation
|
29
|
-
statistics
|
30
|
-
stats
|
31
|
-
talents
|
32
|
-
titles
|
33
|
-
audit
|
34
|
-
].freeze
|
35
|
-
|
36
|
-
##
|
37
|
-
# Helper method for checking valid fields. Use this to validate an array of fields if you are not sure about their
|
38
|
-
# names.
|
39
|
-
#
|
40
|
-
# @param fields [Array<String>] Array containing desired fields to include
|
41
|
-
#
|
42
|
-
# @raise ArgumentError
|
43
|
-
def validate_fields(fields)
|
44
|
-
fields.each do |field|
|
45
|
-
raise ArgumentError, "Unrecognized field #{field}" unless VALID_FIELDS.include? field
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
##
|
50
|
-
# Return data about the specified char
|
51
|
-
#
|
52
|
-
# @param realm [String] The character realm's slug
|
53
|
-
# @param character [String] The character name
|
54
|
-
# @param fields [Array<String>] An array containing all the fields you want to be included in the response.
|
55
|
-
# @!macro request_options
|
56
|
-
#
|
57
|
-
# @!macro response
|
58
|
-
def get(realm, character, fields = [], options = {})
|
59
|
-
validate_fields fields if options.include? :validate_fields
|
60
|
-
|
61
|
-
opts = { ttl: CACHE_DAY, fields: fields.join(',') }.merge(options)
|
62
|
-
|
63
|
-
api_request "#{base_url(:community)}/character/#{CGI.escape(realm)}/#{CGI.escape(character)}", opts
|
64
|
-
end
|
65
|
-
|
66
|
-
##
|
67
|
-
# Return a list containing all WoW characters of a BNet account
|
68
|
-
#
|
69
|
-
# @note This endpoint requires a user token obtained through the user authorization flow
|
70
|
-
# @see https://develop.battle.net/documentation/guides/using-oauth/authorization-code-flow
|
71
|
-
#
|
72
|
-
# @param user_token [String] A token obtained by the authorization flow. See link below.
|
73
|
-
# @!macro request_options
|
74
|
-
#
|
75
|
-
# @!macro response
|
76
|
-
def get_user_characters(user_token, options = {})
|
77
|
-
opts = { ttl: CACHE_HOUR, access_token: user_token }.merge(options)
|
78
|
-
api_request "#{base_url(:community)}/user/characters", opts
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|