zombie_battleground-api 0.1.0 → 0.2.0

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/Gemfile.lock +29 -11
  4. data/README.md +4 -0
  5. data/Rakefile +62 -5
  6. data/lib/zombie_battleground/api.rb +108 -8
  7. data/lib/zombie_battleground/api/client.rb +157 -23
  8. data/lib/zombie_battleground/api/errors.rb +28 -0
  9. data/lib/zombie_battleground/api/models/card.rb +272 -32
  10. data/lib/zombie_battleground/api/models/deck.rb +234 -46
  11. data/lib/zombie_battleground/api/models/match.rb +211 -33
  12. data/lib/zombie_battleground/api/models/simple_card.rb +47 -11
  13. data/lib/zombie_battleground/api/requests/get_card_request.rb +45 -10
  14. data/lib/zombie_battleground/api/requests/get_cards_request.rb +203 -27
  15. data/lib/zombie_battleground/api/requests/get_deck_request.rb +43 -13
  16. data/lib/zombie_battleground/api/requests/get_decks_request.rb +141 -23
  17. data/lib/zombie_battleground/api/requests/get_match_request.rb +43 -13
  18. data/lib/zombie_battleground/api/requests/get_matches_request.rb +125 -21
  19. data/lib/zombie_battleground/api/requests/request_helper.rb +24 -10
  20. data/lib/zombie_battleground/api/responses/get_card_response.rb +50 -16
  21. data/lib/zombie_battleground/api/responses/get_cards_response.rb +103 -33
  22. data/lib/zombie_battleground/api/responses/get_deck_response.rb +49 -17
  23. data/lib/zombie_battleground/api/responses/get_decks_response.rb +103 -33
  24. data/lib/zombie_battleground/api/responses/get_match_response.rb +49 -17
  25. data/lib/zombie_battleground/api/responses/get_matches_response.rb +103 -33
  26. data/lib/zombie_battleground/api/responses/response_helper.rb +32 -16
  27. data/lib/zombie_battleground/api/validation_helper.rb +497 -0
  28. data/lib/zombie_battleground/api/version.rb +5 -1
  29. data/zombie_battleground-api.gemspec +6 -0
  30. metadata +71 -1
@@ -6,39 +6,217 @@ require 'zombie_battleground/api/validation_helper'
6
6
 
7
7
  module ZombieBattleground
8
8
  class Api
9
- ##
10
- # Validator for Match
11
- class Match
12
- include ActiveModel::Validations
13
- include ZombieBattleground::Api::ValidationHelper
14
-
15
- attr_reader :id, :created_at, :updated_at, :player1_id, :player2_id, :player1_accepted,
16
- :player2_accepted, :player1_deck_id, :player2_deck_id, :status, :version,
17
- :random_seed, :winner_id, :block_height
18
-
19
- validate :id_is_a_non_negative_integer
20
- validate :created_at_is_a_time_and_not_null
21
- validate :updated_at_is_a_time_and_not_null
22
- validate :player1_id_is_a_string_and_not_null
23
- validate :player2_id_is_a_string_and_not_null
24
- validates :player1_accepted, inclusion: { in: [true, false] }
25
- validates :player2_accepted, inclusion: { in: [true, false] }
26
- validate :player1_deck_id_is_a_non_negative_integer
27
- validate :player2_deck_id_is_a_non_negative_integer
28
- validate :status_is_a_string_and_not_null
29
- validate :version_is_a_string_and_not_null
30
- validate :random_seed_is_a_non_negative_integer
31
- validate :winner_id_is_a_string_and_not_null
32
- validate :block_height_is_a_non_negative_integer_and_not_null
33
-
34
- def initialize(match)
35
- match.each do |key, value|
36
- next if value.nil? # this is an illegal response, match id 1 is bogus
37
-
38
- if %w[created_at updated_at].include?(key)
39
- instance_variable_set("@#{key}".to_sym, Time.parse(value))
40
- else
41
- instance_variable_set("@#{key}".to_sym, value)
9
+ class Models
10
+ ##
11
+ # Validator for Match
12
+ class Match
13
+ include ActiveModel::Validations
14
+ include ZombieBattleground::Api::ValidationHelper
15
+
16
+ ##
17
+ # @!attribute [r] id
18
+ # the Match's id
19
+ #
20
+ # @return [Integer]
21
+ #
22
+ # @example
23
+ # match.id #=> 1
24
+ #
25
+ # @api public
26
+ attr_reader :id
27
+
28
+ ##
29
+ # @!attribute [r] created_at
30
+ # the Match's created_at time
31
+ #
32
+ # @return [Time]
33
+ #
34
+ # @example
35
+ # match.created_at #=> Time
36
+ #
37
+ # @api public
38
+ attr_reader :created_at
39
+
40
+ ##
41
+ # @!attribute [r] updated_at
42
+ # the Match's updated_at time
43
+ #
44
+ # @return [Time]
45
+ #
46
+ # @example
47
+ # match.updated_at #=> Time
48
+ #
49
+ # @api public
50
+ attr_reader :updated_at
51
+
52
+ ##
53
+ # @!attribute [r] player1_id
54
+ # the Match's player1_id
55
+ #
56
+ # @return [String]
57
+ #
58
+ # @example
59
+ # match.player1_id #=> "ZombieSlayer_16601"
60
+ #
61
+ # @api public
62
+ attr_reader :player1_id
63
+
64
+ ##
65
+ # @!attribute [r] player2_id
66
+ # the Match's player2_id
67
+ #
68
+ # @return [String]
69
+ #
70
+ # @example
71
+ # match.player2_id #=> "ZombieSlayer_50758"
72
+ #
73
+ # @api public
74
+ attr_reader :player2_id
75
+
76
+ ##
77
+ # @!attribute [r] player1_accepted
78
+ # the Match's player1_accepted
79
+ #
80
+ # @return [Boolean]
81
+ #
82
+ # @example
83
+ # match.player1_accepted #=> true
84
+ #
85
+ # @api public
86
+ attr_reader :player1_accepted
87
+
88
+ ##
89
+ # @!attribute [r] player2_accepted
90
+ # the Match's player2_accepted
91
+ #
92
+ # @return [Boolean]
93
+ #
94
+ # @example
95
+ # match.player2_accepted #=> true
96
+ #
97
+ # @api public
98
+ attr_reader :player2_accepted
99
+
100
+ ##
101
+ # @!attribute [r] player1_deck_id
102
+ # the Match's player1_deck_id
103
+ #
104
+ # @return [Integer]
105
+ #
106
+ # @example
107
+ # match.player1_deck_id #=> 1
108
+ #
109
+ # @api public
110
+ attr_reader :player1_deck_id
111
+
112
+ ##
113
+ # @!attribute [r] player2_deck_id
114
+ # the Match's player2_deck_id
115
+ #
116
+ # @return [Integer]
117
+ #
118
+ # @example
119
+ # match.player2_deck_id #=> 4
120
+ #
121
+ # @api public
122
+ attr_reader :player2_deck_id
123
+
124
+ ##
125
+ # @!attribute [r] status
126
+ # the Match's status
127
+ #
128
+ # @return [String]
129
+ #
130
+ # @example
131
+ # match.status #=> "Ended"
132
+ #
133
+ # @api public
134
+ attr_reader :status
135
+
136
+ ##
137
+ # @!attribute [r] version
138
+ # the Match's version
139
+ #
140
+ # @return [String]
141
+ #
142
+ # @example
143
+ # match.version #=> "v3"
144
+ #
145
+ # @api public
146
+ attr_reader :version
147
+
148
+ ##
149
+ # @!attribute [r] random_seed
150
+ # the Match's random_seed
151
+ #
152
+ # @return [Integer]
153
+ #
154
+ # @example
155
+ # match.random_seed #=> 1548242486
156
+ #
157
+ # @api public
158
+ attr_reader :random_seed
159
+
160
+ ##
161
+ # @!attribute [r] winner_id
162
+ # the Match's winner_id
163
+ #
164
+ # @return [String]
165
+ #
166
+ # @example
167
+ # match.winner_id #=> "ZombieSlayer_507586"
168
+ #
169
+ # @api public
170
+ attr_reader :winner_id
171
+
172
+ ##
173
+ # @!attribute [r] block_height
174
+ # the Match's block_height
175
+ #
176
+ # @return [Integer]
177
+ #
178
+ # @example
179
+ # match.block_height #=> 497513
180
+ #
181
+ # @api public
182
+ attr_reader :block_height
183
+
184
+ validate :id_is_a_non_negative_integer
185
+ validate :created_at_is_a_time_and_not_null
186
+ validate :updated_at_is_a_time_and_not_null
187
+ validate :player1_id_is_a_string_and_not_null
188
+ validate :player2_id_is_a_string_and_not_null
189
+ validates :player1_accepted, inclusion: { in: [true, false] }
190
+ validates :player2_accepted, inclusion: { in: [true, false] }
191
+ validate :player1_deck_id_is_a_non_negative_integer
192
+ validate :player2_deck_id_is_a_non_negative_integer
193
+ validate :status_is_a_string_and_not_null
194
+ validate :version_is_a_string_and_not_null
195
+ validate :random_seed_is_a_non_negative_integer
196
+ validate :winner_id_is_a_string_and_not_null
197
+ validate :block_height_is_a_non_negative_integer_and_not_null
198
+
199
+ ##
200
+ # Creates a new Match
201
+ #
202
+ # @param match [Hash] Parsed JSON response
203
+ #
204
+ # @return [ZombieBattleground::Api::Match]
205
+ #
206
+ # @example
207
+ # match = ZombieBattleground::Api::Match.new(parsed_json)
208
+ # # => ZombieBattleground::Api::Match
209
+ #
210
+ # @api public
211
+ def initialize(match)
212
+ match.each do |key, value|
213
+ next if value.nil? # this is an illegal response, match id 1 is bogus
214
+
215
+ if %w[created_at updated_at].include?(key)
216
+ instance_variable_set("@#{key}".to_sym, Time.parse(value))
217
+ else
218
+ instance_variable_set("@#{key}".to_sym, value)
219
+ end
42
220
  end
43
221
  end
44
222
  end
@@ -6,20 +6,56 @@ require 'zombie_battleground/api/validation_helper'
6
6
 
7
7
  module ZombieBattleground
8
8
  class Api
9
- ##
10
- # Validator for SimpleCard (only returned from GetDeck(s))
11
- class SimpleCard
12
- include ActiveModel::Validations
13
- include ZombieBattleground::Api::ValidationHelper
9
+ class Models
10
+ ##
11
+ # Validator for SimpleCard (only returned from GetDeck(s))
12
+ class SimpleCard
13
+ include ActiveModel::Validations
14
+ include ZombieBattleground::Api::ValidationHelper
14
15
 
15
- attr_reader :card_name, :amount
16
+ ##
17
+ # @!attribute [r] card_name
18
+ # the Card's name
19
+ #
20
+ # @return [String]
21
+ #
22
+ # @example
23
+ # simple_card.card_name #=> "Hazmaz"
24
+ #
25
+ # @api public
26
+ attr_reader :card_name
16
27
 
17
- validate :card_name_is_a_string_and_not_null
18
- validate :amount_is_a_non_negative_integer_and_not_null
28
+ ##
29
+ # @!attribute [r] amount
30
+ # the amount of the Card in the deck
31
+ #
32
+ # @return [Integer]
33
+ #
34
+ # @example
35
+ # simple_card.amount #=> 2
36
+ #
37
+ # @api public
38
+ attr_reader :amount
19
39
 
20
- def initialize(card)
21
- card.each do |key, value|
22
- instance_variable_set("@#{key}".to_sym, value)
40
+ validate :card_name_is_a_string_and_not_null
41
+ validate :amount_is_a_non_negative_integer_and_not_null
42
+
43
+ ##
44
+ # Creates a new SimpleCard (returned by GetDeck(s))
45
+ #
46
+ # @param card [Hash] Parsed JSON response
47
+ #
48
+ # @return [ZombieBattleground::Api::SimpleCard]
49
+ #
50
+ # @example
51
+ # simple_card = ZombieBattleground::Api::SimpleCard.new(parsed_json)
52
+ # # => ZombieBattleground::Api::SimpleCard
53
+ #
54
+ # @api public
55
+ def initialize(card)
56
+ card.each do |key, value|
57
+ instance_variable_set("@#{key}".to_sym, value)
58
+ end
23
59
  end
24
60
  end
25
61
  end
@@ -8,19 +8,54 @@ require 'zombie_battleground/api/requests/request_helper'
8
8
  module ZombieBattleground
9
9
  class Api
10
10
  ##
11
- # Request validator for GetCard
12
- class GetCardRequest
13
- include ActiveModel::Validations
14
- include ZombieBattleground::Api::ValidationHelper
15
- include ZombieBattleground::Api::RequestHelper
11
+ # Namespace for Requests
12
+ class Requests
13
+ ##
14
+ # Request validator for GetCard
15
+ class GetCardRequest
16
+ include ActiveModel::Validations
17
+ include ZombieBattleground::Api::ValidationHelper
18
+ include ZombieBattleground::Api::Requests::RequestHelper
16
19
 
17
- attr_accessor :mould_id, :version
20
+ ##
21
+ # @!attribute [r] mould_id
22
+ # Card's mould_id
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # request.id #=> "1"
28
+ #
29
+ # @api public
30
+ attr_accessor :mould_id
18
31
 
19
- validate :mould_id_is_a_string_and_not_null
20
- validate :version_is_a_string_and_not_null
32
+ ##
33
+ # @!attribute [r] version
34
+ # Deck's version
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # request.id #=> "v3"
40
+ #
41
+ # @api public
42
+ attr_accessor :version
21
43
 
22
- def uri
23
- 'card'
44
+ validate :mould_id_is_a_string_and_not_null
45
+ validate :version_is_a_string_and_not_null
46
+
47
+ ##
48
+ # The URI for the endpoint
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # request.uri # => "card"
54
+ #
55
+ # @api public
56
+ def uri
57
+ 'card'
58
+ end
24
59
  end
25
60
  end
26
61
  end
@@ -7,33 +7,209 @@ require 'zombie_battleground/api/requests/request_helper'
7
7
 
8
8
  module ZombieBattleground
9
9
  class Api
10
- ##
11
- # Request validator for GetCards
12
- class GetCardsRequest
13
- include ActiveModel::Validations
14
- include ZombieBattleground::Api::ValidationHelper
15
- include ZombieBattleground::Api::RequestHelper
16
-
17
- attr_accessor :id, :mould_id, :version, :kind, :set, :name, :rank, :type, :rarity,
18
- :damage, :health, :cost, :page, :limit
19
-
20
- validate :id_is_a_non_negative_integer
21
- validate :mould_id_is_a_string
22
- validate :version_is_a_string
23
- validate :kind_is_a_string
24
- validate :set_is_a_string
25
- validate :name_is_a_string
26
- validate :rank_is_a_string
27
- validate :type_is_a_string
28
- validate :rarity_is_a_string
29
- validate :damage_is_a_non_negative_integer
30
- validate :health_is_a_non_negative_integer
31
- validate :cost_is_a_non_negative_integer
32
- validate :page_is_a_non_negative_integer
33
- validate :limit_is_a_non_negative_integer
34
-
35
- def uri
36
- 'cards'
10
+ class Requests
11
+ ##
12
+ # Request validator for GetCards
13
+ class GetCardsRequest
14
+ include ActiveModel::Validations
15
+ include ZombieBattleground::Api::ValidationHelper
16
+ include ZombieBattleground::Api::Requests::RequestHelper
17
+
18
+ ##
19
+ # @!attribute [r] id
20
+ # Optionally set the Card's id for filtered querying
21
+ #
22
+ # @return [Integer]
23
+ #
24
+ # @example
25
+ # request.id #=> 1
26
+ #
27
+ # @api public
28
+ attr_accessor :id
29
+
30
+ ##
31
+ # @!attribute [r] mould_id
32
+ # Optionally mould_id the Card's mould_id for filtered querying
33
+ #
34
+ # @return [String]
35
+ #
36
+ # @example
37
+ # request.mould_id #=> "1"
38
+ #
39
+ # @api public
40
+ attr_accessor :mould_id
41
+
42
+ ##
43
+ # @!attribute [r] version
44
+ # Optionally version the Card's version for filtered querying
45
+ #
46
+ # @return [String]
47
+ #
48
+ # @example
49
+ # request.version #=> "v3"
50
+ #
51
+ # @api public
52
+ attr_accessor :version
53
+
54
+ ##
55
+ # @!attribute [r] set
56
+ # Optionally set the Card's set for filtered querying
57
+ #
58
+ # @return [String]
59
+ #
60
+ # @example
61
+ # request.set #=> "AIR"
62
+ #
63
+ # @api public
64
+ attr_accessor :kind
65
+
66
+ ##
67
+ # @!attribute [r] set
68
+ # Optionally set the Card's set for filtered querying
69
+ #
70
+ # @return [String]
71
+ #
72
+ # @example
73
+ # request.set #=> "AIR"
74
+ #
75
+ # @api public
76
+ attr_accessor :set
77
+
78
+ ##
79
+ # @!attribute [r] name
80
+ # Optionally set the Card's name for filtered querying
81
+ #
82
+ # @return [String]
83
+ #
84
+ # @example
85
+ # request.name #=> "Whizpar"
86
+ #
87
+ # @api public
88
+ attr_accessor :name
89
+
90
+ ##
91
+ # @!attribute [r] rank
92
+ # Optionally set the Card's rank for filtered querying
93
+ #
94
+ # @return [String]
95
+ #
96
+ # @example
97
+ # request.rank #=> "MINION"
98
+ #
99
+ # @api public
100
+ attr_accessor :rank
101
+
102
+ ##
103
+ # @!attribute [r] type
104
+ # Optionally set the Card's type for filtered querying
105
+ #
106
+ # @return [String]
107
+ #
108
+ # @example
109
+ # request.type #=> "WALKER"
110
+ #
111
+ # @api public
112
+ attr_accessor :type
113
+
114
+ ##
115
+ # @!attribute [r] rarity
116
+ # Optionally set the Card's rarity for filtered querying
117
+ #
118
+ # @return [String]
119
+ #
120
+ # @example
121
+ # request.rarity #=> ""
122
+ #
123
+ # @api public
124
+ attr_accessor :rarity
125
+
126
+ ##
127
+ # @!attribute [r] damage
128
+ # Optionally set the Card's damage for filtered querying
129
+ #
130
+ # @return [Integer]
131
+ #
132
+ # @example
133
+ # request.damage #=> 1
134
+ #
135
+ # @api public
136
+ attr_accessor :damage
137
+
138
+ ##
139
+ # @!attribute [r] health
140
+ # Optionally set the Card's health for filtered querying
141
+ #
142
+ # @return [Integer]
143
+ #
144
+ # @example
145
+ # request.health #=> 1
146
+ #
147
+ # @api public
148
+ attr_accessor :health
149
+
150
+ ##
151
+ # @!attribute [r] cost
152
+ # Optionally set the Card's cost for filtered querying
153
+ #
154
+ # @return [Integer]
155
+ #
156
+ # @example
157
+ # request.cost #=> 1
158
+ #
159
+ # @api public
160
+ attr_accessor :cost
161
+
162
+ ##
163
+ # @!attribute [r] page
164
+ # Optionally set the page number for filtered querying
165
+ #
166
+ # @return [Integer]
167
+ #
168
+ # @example
169
+ # request.page #=> 1
170
+ #
171
+ # @api public
172
+ attr_accessor :page
173
+
174
+ ##
175
+ # @!attribute [r] limit
176
+ # Optionally set the limit for max Cards returned
177
+ #
178
+ # @return [Integer]
179
+ #
180
+ # @example
181
+ # request.limit #=> 100
182
+ #
183
+ # @api public
184
+ attr_accessor :limit
185
+
186
+ validate :id_is_a_non_negative_integer
187
+ validate :mould_id_is_a_string
188
+ validate :version_is_a_string
189
+ validate :kind_is_a_string
190
+ validate :set_is_a_string
191
+ validate :name_is_a_string
192
+ validate :rank_is_a_string
193
+ validate :type_is_a_string
194
+ validate :rarity_is_a_string
195
+ validate :damage_is_a_non_negative_integer
196
+ validate :health_is_a_non_negative_integer
197
+ validate :cost_is_a_non_negative_integer
198
+ validate :page_is_a_non_negative_integer
199
+ validate :limit_is_a_non_negative_integer
200
+
201
+ ##
202
+ # The URI for the endpoint
203
+ #
204
+ # @return [String]
205
+ #
206
+ # @example
207
+ # request.uri # => "cards"
208
+ #
209
+ # @api public
210
+ def uri
211
+ 'cards'
212
+ end
37
213
  end
38
214
  end
39
215
  end