bn 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ require "bn/api/base"
2
+ require "bn/api/base"
3
+
4
+ module BN
5
+ module API
6
+ # The the World of Warcraft API requester.
7
+ class WOW < Base
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ module BN
2
+ # The Entity namespace.
3
+ module Entity
4
+ # The valid regions for the API.
5
+ # Contains name, host, and valid locales for each region.
6
+ REGIONS = {
7
+ us: { name: "US", uri: "https://us.api.battle.net", locales: %w(en_US es_MX pt_BR) },
8
+ eu: { name: "Europe", uri: "https://us.api.battle.net", locales: %w(en_GB es_ES fr_FR ru_RU de_DE pt_PT it_IT) },
9
+ kr: { name: "Korea", uri: "https://kr.api.battle.net", locales: %w(ko_KR) },
10
+ tw: { name: "Taiwan", uri: "https://tw.api.battle.net", locales: %w(zh_TW) },
11
+ cn: { name: "China", uri: "https://api.battlenet.com.cn", locales: %w(zh_CN) },
12
+ sea: { name: "South East Asia", uri: "https://sea.api.battle.net", locales: %w(en_US) }
13
+ }
14
+ end
15
+ end
16
+
17
+ require "bn/api/d3"
18
+ require "bn/api/sc2"
19
+ require "bn/api/wow"
@@ -0,0 +1,16 @@
1
+ require "bn/helpers/has_attributes"
2
+
3
+ module BN
4
+ module Entity
5
+ # The base class for game entities.
6
+ class Base
7
+ include Helpers::HasAttributes
8
+
9
+ protected
10
+
11
+ def convert_time(value)
12
+ value.is_a?(Time) ? value : Time.at(value.to_i)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,164 @@
1
+ require "bn/entity/base"
2
+
3
+ module BN
4
+ module Entity
5
+ module D3
6
+ # A hero within Diablo 3.
7
+ class Hero < Base
8
+ MAX_LEVEL = 70
9
+
10
+ def initialize(attributes={})
11
+ super
12
+
13
+ @level ||= 1
14
+ @paragon_level ||= 0
15
+ @hardcore ||= false
16
+ @seasonal ||= false
17
+ @dead ||= false
18
+ end
19
+
20
+ # @method id
21
+ # Get the ID.
22
+ #
23
+ # @return [Integer]
24
+
25
+ # @method id=
26
+ # Set the ID.
27
+ #
28
+ # @param [#to_i] value
29
+ # @return [Integer]
30
+ attribute(:id) { |value| value.to_i }
31
+
32
+ # @method name
33
+ # Get the name.
34
+ #
35
+ # @return [String]
36
+
37
+ # @method name=
38
+ # Set the name.
39
+ #
40
+ # @param [#to_s] value
41
+ # @return [String]
42
+ attribute(:name) { |value| value.to_s.strip }
43
+
44
+ # @method hero_class
45
+ # Get the hero class.
46
+ #
47
+ # @return [Symbol]
48
+
49
+ # @method hero_class=
50
+ # Set the hero class.
51
+ #
52
+ # @param [#to_sym] value
53
+ # @return [Symbol]
54
+ attribute(:hero_class) { |value| value.to_sym }
55
+
56
+ # @method gender
57
+ # Get the gender.
58
+ #
59
+ # @return [Symbol]
60
+
61
+ # @method gender=
62
+ # Set the gender.
63
+ #
64
+ # @param [#to_sym] value
65
+ # @return [Symbol]
66
+ attribute(:gender) { |value| value.to_sym }
67
+
68
+ # @method level
69
+ # Get the level.
70
+ #
71
+ # @return [Integer]
72
+
73
+ # @method level=
74
+ # Set the level.
75
+ #
76
+ # @param [#to_i] value
77
+ # @return [Integer]
78
+ attribute(:level) { |value| validate_level(value) }
79
+
80
+ # @method paragon_level
81
+ # Get the paragon level.
82
+ #
83
+ # @return [Integer]
84
+
85
+ # @method paragon_level=
86
+ # Set the paragon level.
87
+ #
88
+ # @param [#to_i] value
89
+ # @return [Integer]
90
+ attribute(:paragon_level) { |value| validate_level(value, true) }
91
+
92
+ # @method kills
93
+ # Get the number of kills per enemy type.
94
+ #
95
+ # @return [Hash]
96
+
97
+ # @method kills=
98
+ # Set the number of kills per enemy type.
99
+ #
100
+ # @param [#to_h] value
101
+ # @return [Hash]
102
+ attribute(:kills) { |value| value.to_h }
103
+
104
+ # @method hardcore
105
+ # Get whether this hero is hardcore.
106
+ #
107
+ # @return [Boolean]
108
+
109
+ # @method hardcore=
110
+ # Set whether this hero is hardcore.
111
+ #
112
+ # @param [Boolean] value
113
+ # @return [Boolean]
114
+ attribute(:hardcore) { |value| !!value }
115
+
116
+ # @method seasonal
117
+ # Get whether this hero is seasonal.
118
+ #
119
+ # @return [Boolean]
120
+
121
+ # @method seasonal=
122
+ # Set whether this hero is seasonal.
123
+ #
124
+ # @param [Boolean] value
125
+ # @return [Boolean]
126
+ attribute(:seasonal) { |value| !!value }
127
+
128
+ # @method last_updated
129
+ # Get the last updated time.
130
+ #
131
+ # @return [Time]
132
+
133
+ # @method last_updated=
134
+ # Set the last updated time.
135
+ #
136
+ # @param [Time, #to_i] value
137
+ # @return [Time]
138
+ attribute(:last_updated) { |value| convert_time(value) }
139
+
140
+ # @method dead
141
+ # Get whether this hero is dead.
142
+ #
143
+ # @return [Boolean]
144
+
145
+ # @method dead=
146
+ # Set whether this hero is dead.
147
+ #
148
+ # @param [Boolean] value
149
+ # @return [Boolean]
150
+ attribute(:dead) { |value| !!value }
151
+
152
+ protected
153
+
154
+ def validate_level(value, paragon=false)
155
+ value = value.to_i
156
+ value = 0 if value < MAX_LEVEL
157
+ value = MAX_LEVEL if !paragon && value > MAX_LEVEL
158
+
159
+ value
160
+ end
161
+ end
162
+ end
163
+ end
164
+ end
@@ -0,0 +1,185 @@
1
+ require "bn/entity/base"
2
+ require "bn/entity/d3/hero"
3
+
4
+ module BN
5
+ module Entity
6
+ module D3
7
+ # A profile within Diablo 3.
8
+ class Profile < Base
9
+ # @method battle_tag
10
+ # Get the battle tag.
11
+ #
12
+ # @return [String]
13
+
14
+ # @method battle_tag=
15
+ # Set the battle tag.
16
+ #
17
+ # @param [#to_s] value
18
+ # @return [String]
19
+ attribute(:battle_tag) { |value| value.to_s.strip }
20
+
21
+ # @method paragon_level
22
+ # Get the paragon level.
23
+ #
24
+ # @return [Integer]
25
+
26
+ # @method paragon_level=
27
+ # Set the paragon level.
28
+ #
29
+ # @param [#to_i] value
30
+ # @return [Integer]
31
+ attribute(:paragon_level) { |value| value.to_i }
32
+
33
+ # @method paragon_level_hardcore
34
+ # Get the paragon hardcore level.
35
+ #
36
+ # @return [Integer]
37
+
38
+ # @method paragon_level_hardcore=
39
+ # Set the paragon hardcore level.
40
+ #
41
+ # @param [#to_i] value
42
+ # @return [Integer]
43
+ attribute(:paragon_level_hardcore) { |value| value.to_i }
44
+
45
+ # @method paragon_level_season
46
+ # Get the paragon season level.
47
+ #
48
+ # @return [Integer]
49
+
50
+ # @method paragon_level_season=
51
+ # Set the paragon season level.
52
+ #
53
+ # @param [#to_i] value
54
+ # @return [Integer]
55
+ attribute(:paragon_level_season) { |value| value.to_i }
56
+
57
+ # @method paragon_level_season_hardcore
58
+ # Get the paragon season hardcore level.
59
+ #
60
+ # @return [Integer]
61
+
62
+ # @method paragon_level_season_hardcore=
63
+ # Set the paragon season hardcore level.
64
+ #
65
+ # @param [#to_i] value
66
+ # @return [Integer]
67
+ attribute(:paragon_level_season_hardcore) { |value| value.to_i }
68
+
69
+ # @method guild_name
70
+ # Get the guild name.
71
+ #
72
+ # @return [String]
73
+
74
+ # @method guild_name=
75
+ # Set the guild name.
76
+ #
77
+ # @param [#to_s] value
78
+ # @return [String]
79
+ attribute(:guild_name) { |value| value.to_s }
80
+
81
+ # @method heroes
82
+ # Get the heroes.
83
+ #
84
+ # @return [<Hero>]
85
+
86
+ # @method heroes=
87
+ # Set the heroes.
88
+ #
89
+ # @param [#to_a] value
90
+ # @return [<Hero>]
91
+ attribute(:heroes) { |value| value.to_a.collect { |hero| convert_hero(hero) } }
92
+
93
+ # @method last_hero_played
94
+ # Get the last hero played.
95
+ #
96
+ # @return [Hero]
97
+
98
+ # @method heroes=
99
+ # Set the last hero played.
100
+ #
101
+ # @param [Hero, #to_h] value
102
+ # @return [Hero]
103
+ attribute(:last_hero_played) { |value| convert_hero(value) }
104
+
105
+ # @method last_updated
106
+ # Get the last updated time.
107
+ #
108
+ # @return [Time]
109
+
110
+ # @method last_updated=
111
+ # Set the last updated time.
112
+ #
113
+ # @param [Time, #to_i] value
114
+ # @return [Time]
115
+ attribute(:last_updated) { |value| convert_time(value) }
116
+
117
+ # @method kills
118
+ # Get the number of kills per enemy type.
119
+ #
120
+ # @return [Hash]
121
+
122
+ # @method kills=
123
+ # Set the number of kills per enemy type.
124
+ #
125
+ # @param [#to_h] value
126
+ # @return [Hash]
127
+ attribute(:kills) { |value| value.to_h }
128
+
129
+ # @method highest_hardcore_level
130
+ # Get the highest hardcore level.
131
+ #
132
+ # @return [Integer]
133
+
134
+ # @method highest_hardcore_level=
135
+ # Set the highest hardcore level.
136
+ #
137
+ # @param [#to_i] value
138
+ # @return [Integer]
139
+ attribute(:highest_hardcore_level) { |value| value.to_i }
140
+
141
+ # @method time_played
142
+ # Get the time played.
143
+ #
144
+ # @return [Hash]
145
+
146
+ # @method time_played=
147
+ # Set the time played.
148
+ #
149
+ # @param [#to_h] value
150
+ # @return [Hash]
151
+ attribute(:time_played) { |value| value.to_h }
152
+
153
+ # @method progression
154
+ # Get the act progression.
155
+ #
156
+ # @return [Hash]
157
+
158
+ # @method time_played=
159
+ # Set the act progression.
160
+ #
161
+ # @param [#to_h] value
162
+ # @return [Hash]
163
+ attribute(:progression) { |value| value.to_h }
164
+
165
+ # @method fallen_heroes
166
+ # Get the fallen heroes.
167
+ #
168
+ # @return [<Hero>]
169
+
170
+ # @method fallen_heroes=
171
+ # Set the fallen heroes.
172
+ #
173
+ # @param [#to_a] value
174
+ # @return [<Hero>]
175
+ attribute(:fallen_heroes) { |value| value.to_a }
176
+
177
+ protected
178
+
179
+ def convert_hero(value)
180
+ value.is_a?(Hero) ? value : Hero.new(value)
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,11 @@
1
+ require "bn/error/base"
2
+
3
+ module BN
4
+ module Error
5
+ module API
6
+ # The base class for API errors.
7
+ class Base < Error::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ require "bn/error/api/base"
2
+
3
+ module BN
4
+ module Error
5
+ module API
6
+ # Raised when the key is invalid.
7
+ class InvalidKey < Base
8
+ def to_s
9
+ "The key is invalid."
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ require "bn/error/api/base"
2
+
3
+ module BN
4
+ module Error
5
+ module API
6
+ # Raised when the locale is invalid.
7
+ class InvalidLocale < Base
8
+ attribute(:region)
9
+
10
+ def to_s
11
+ "Invalid locale for region '#{@region[:name]}'. Must be one of the following: #{@region[:locales]}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ require "bn/error/api/base"
2
+
3
+ module BN
4
+ module Error
5
+ module API
6
+ # Raised when the region is invalid.
7
+ class InvalidRegion < Base
8
+ def to_s
9
+ "Region must be one of the following: #{BN::API::REGIONS.keys}"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end