zombie_battleground-api 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/Gemfile.lock +29 -11
- data/README.md +4 -0
- data/Rakefile +62 -5
- data/lib/zombie_battleground/api.rb +108 -8
- data/lib/zombie_battleground/api/client.rb +157 -23
- data/lib/zombie_battleground/api/errors.rb +28 -0
- data/lib/zombie_battleground/api/models/card.rb +272 -32
- data/lib/zombie_battleground/api/models/deck.rb +234 -46
- data/lib/zombie_battleground/api/models/match.rb +211 -33
- data/lib/zombie_battleground/api/models/simple_card.rb +47 -11
- data/lib/zombie_battleground/api/requests/get_card_request.rb +45 -10
- data/lib/zombie_battleground/api/requests/get_cards_request.rb +203 -27
- data/lib/zombie_battleground/api/requests/get_deck_request.rb +43 -13
- data/lib/zombie_battleground/api/requests/get_decks_request.rb +141 -23
- data/lib/zombie_battleground/api/requests/get_match_request.rb +43 -13
- data/lib/zombie_battleground/api/requests/get_matches_request.rb +125 -21
- data/lib/zombie_battleground/api/requests/request_helper.rb +24 -10
- data/lib/zombie_battleground/api/responses/get_card_response.rb +50 -16
- data/lib/zombie_battleground/api/responses/get_cards_response.rb +103 -33
- data/lib/zombie_battleground/api/responses/get_deck_response.rb +49 -17
- data/lib/zombie_battleground/api/responses/get_decks_response.rb +103 -33
- data/lib/zombie_battleground/api/responses/get_match_response.rb +49 -17
- data/lib/zombie_battleground/api/responses/get_matches_response.rb +103 -33
- data/lib/zombie_battleground/api/responses/response_helper.rb +32 -16
- data/lib/zombie_battleground/api/validation_helper.rb +497 -0
- data/lib/zombie_battleground/api/version.rb +5 -1
- data/zombie_battleground-api.gemspec +6 -0
- metadata +71 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e39b7b110a3e45704b60e09b56a81b353ffc87347a06d759d8deb178c8b788b7
|
4
|
+
data.tar.gz: b369d8a886b27eae14908fd61b6a36767c259336ce0a7dcc5b1a4ee3880cd665
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 658ec416c5a8aad44dcbe57ef39b2f518ecfaa4b07c8f6b2265cfcef207f36631144a96e38bcc3d101e57c4956250b02d264fb7defcfd39dbe8bca95a4e25ea5
|
7
|
+
data.tar.gz: 7ac36a2d0f1339a2d03d40eb9a9a795443e24a54ffd58fd7d94a1ffd9c4a2116e0d03fd94fe20b1017add7150fc4fbf8f51d4b46b112ad5c8badd0cd7a98e16b
|
data/.gitignore
CHANGED
@@ -46,6 +46,9 @@ build-iPhoneSimulator/
|
|
46
46
|
# .ruby-version
|
47
47
|
# .ruby-gemset
|
48
48
|
|
49
|
+
# Ignore Vim swaps
|
50
|
+
*.sw*
|
51
|
+
|
49
52
|
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
50
53
|
.rvmrc
|
51
54
|
=======
|
@@ -54,6 +57,7 @@ build-iPhoneSimulator/
|
|
54
57
|
/_yardoc/
|
55
58
|
/coverage/
|
56
59
|
/doc/
|
60
|
+
/out/
|
57
61
|
/pkg/
|
58
62
|
/spec/reports/
|
59
63
|
/tmp/
|
data/Gemfile.lock
CHANGED
@@ -1,22 +1,23 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
zombie_battleground-api (0.
|
4
|
+
zombie_battleground-api (0.2.0)
|
5
5
|
activerecord
|
6
6
|
faraday
|
7
7
|
json
|
8
8
|
pry
|
9
|
+
pry-doc
|
9
10
|
|
10
11
|
GEM
|
11
12
|
remote: https://rubygems.org/
|
12
13
|
specs:
|
13
|
-
activemodel (5.2.
|
14
|
-
activesupport (= 5.2.
|
15
|
-
activerecord (5.2.
|
16
|
-
activemodel (= 5.2.
|
17
|
-
activesupport (= 5.2.
|
14
|
+
activemodel (5.2.2)
|
15
|
+
activesupport (= 5.2.2)
|
16
|
+
activerecord (5.2.2)
|
17
|
+
activemodel (= 5.2.2)
|
18
|
+
activesupport (= 5.2.2)
|
18
19
|
arel (>= 9.0)
|
19
|
-
activesupport (5.2.
|
20
|
+
activesupport (5.2.2)
|
20
21
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
21
22
|
i18n (>= 0.7, < 2)
|
22
23
|
minitest (~> 5.1)
|
@@ -24,24 +25,29 @@ GEM
|
|
24
25
|
arel (9.0.0)
|
25
26
|
ast (2.4.0)
|
26
27
|
coderay (1.1.2)
|
27
|
-
concurrent-ruby (1.
|
28
|
+
concurrent-ruby (1.1.4)
|
28
29
|
diff-lcs (1.3)
|
30
|
+
docile (1.3.1)
|
29
31
|
faraday (0.15.4)
|
30
32
|
multipart-post (>= 1.2, < 3)
|
31
|
-
|
33
|
+
gem-release (2.0.1)
|
34
|
+
i18n (1.5.3)
|
32
35
|
concurrent-ruby (~> 1.0)
|
33
36
|
jaro_winkler (1.5.1)
|
34
37
|
json (2.1.0)
|
35
|
-
method_source (0.9.
|
38
|
+
method_source (0.9.2)
|
36
39
|
minitest (5.11.3)
|
37
40
|
multipart-post (2.0.0)
|
38
41
|
parallel (1.12.1)
|
39
42
|
parser (2.5.1.0)
|
40
43
|
ast (~> 2.4.0)
|
41
44
|
powerpack (0.1.2)
|
42
|
-
pry (0.12.
|
45
|
+
pry (0.12.2)
|
43
46
|
coderay (~> 1.1.0)
|
44
47
|
method_source (~> 0.9.0)
|
48
|
+
pry-doc (1.0.0)
|
49
|
+
pry (~> 0.11)
|
50
|
+
yard (~> 0.9.11)
|
45
51
|
rainbow (3.0.0)
|
46
52
|
rake (10.5.0)
|
47
53
|
rspec (3.8.0)
|
@@ -66,19 +72,31 @@ GEM
|
|
66
72
|
ruby-progressbar (~> 1.7)
|
67
73
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
68
74
|
ruby-progressbar (1.9.0)
|
75
|
+
simplecov (0.16.1)
|
76
|
+
docile (~> 1.1)
|
77
|
+
json (>= 1.8, < 3)
|
78
|
+
simplecov-html (~> 0.10.0)
|
79
|
+
simplecov-html (0.10.2)
|
69
80
|
thread_safe (0.3.6)
|
70
81
|
tzinfo (1.2.5)
|
71
82
|
thread_safe (~> 0.1)
|
72
83
|
unicode-display_width (1.4.0)
|
84
|
+
yard (0.9.18)
|
85
|
+
yardstick (0.9.9)
|
86
|
+
yard (~> 0.8, >= 0.8.7.2)
|
73
87
|
|
74
88
|
PLATFORMS
|
75
89
|
ruby
|
76
90
|
|
77
91
|
DEPENDENCIES
|
78
92
|
bundler (~> 1.16)
|
93
|
+
gem-release
|
79
94
|
rake (~> 10.0)
|
80
95
|
rspec (~> 3.0)
|
81
96
|
rubocop
|
97
|
+
simplecov
|
98
|
+
yard
|
99
|
+
yardstick
|
82
100
|
zombie_battleground-api!
|
83
101
|
|
84
102
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -23,6 +23,8 @@ Or install it yourself as:
|
|
23
23
|
Use the singleton class `ZombieBattleground::Api`
|
24
24
|
|
25
25
|
```ruby
|
26
|
+
require 'zombie_battleground-api/api'
|
27
|
+
|
26
28
|
ZombieBattleground::Api.decks(limit: 1)
|
27
29
|
# => ZombieBattleground::Api::GetDecksResponse
|
28
30
|
```
|
@@ -30,6 +32,8 @@ ZombieBattleground::Api.decks(limit: 1)
|
|
30
32
|
Use the API client directly
|
31
33
|
|
32
34
|
```ruby
|
35
|
+
require 'zombie_battleground-api/api/client'
|
36
|
+
|
33
37
|
client = ZombieBattleground::Api::Client.new
|
34
38
|
client.decks(limit: 1) # => ZombieBattleground::Api::GetDecksResponse
|
35
39
|
```
|
data/Rakefile
CHANGED
@@ -3,14 +3,71 @@
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
require 'rubocop/rake_task'
|
6
|
+
require 'yard'
|
7
|
+
require 'yard/rake/yardoc_task'
|
8
|
+
require 'yardstick/rake/measurement'
|
9
|
+
require 'yardstick/rake/verify'
|
6
10
|
|
7
|
-
|
8
|
-
|
11
|
+
def empty_directory(directory)
|
12
|
+
FileUtils.remove_entry(directory)
|
13
|
+
FileUtils.mkdir(directory)
|
14
|
+
end
|
15
|
+
|
16
|
+
# clean up the workspace
|
17
|
+
task(:clean) do
|
18
|
+
empty_directory('doc')
|
19
|
+
empty_directory('out')
|
20
|
+
empty_directory('pkg')
|
21
|
+
end
|
9
22
|
|
23
|
+
# unit tests
|
24
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
25
|
+
task.pattern = 'spec/**/*_spec.rb'
|
26
|
+
task.rspec_opts = '--require spec_helper ' \
|
27
|
+
'--format documentation ' \
|
28
|
+
'--format html ' \
|
29
|
+
'--out out/rspec_unit.html'
|
30
|
+
end
|
31
|
+
task(default: :spec)
|
32
|
+
|
33
|
+
# configure rubocop
|
10
34
|
RuboCop::RakeTask.new(:rubocop) do |task|
|
11
|
-
task.options = [
|
35
|
+
task.options = [
|
36
|
+
'--format', 'simple',
|
37
|
+
'--format', 'html',
|
38
|
+
'--out', 'out/rubocop.html',
|
39
|
+
'lib/**/*.rb',
|
40
|
+
'spec/**/*.rb'
|
41
|
+
]
|
42
|
+
end
|
43
|
+
task(default: :rubocop)
|
44
|
+
|
45
|
+
# configure yard
|
46
|
+
YARD::Rake::YardocTask.new(:yard) do |task|
|
47
|
+
task.files = Dir['lib/**/*.rb']
|
48
|
+
task.options = [
|
49
|
+
'--quiet' # YARD doesn't like the methods that received (**args)
|
50
|
+
]
|
51
|
+
task.stats_options = [
|
52
|
+
'--list-undoc'
|
53
|
+
]
|
54
|
+
end
|
55
|
+
task(default: :yard)
|
56
|
+
|
57
|
+
# documentation coverage
|
58
|
+
Yardstick::Rake::Measurement.new(:yardstick_measure) do |task|
|
59
|
+
task.output = 'out/yard-report.txt'
|
60
|
+
end
|
61
|
+
task(default: :yardstick_measure)
|
62
|
+
|
63
|
+
# documentation enforcement
|
64
|
+
Yardstick::Rake::Verify.new(:yardstick_verify) do |task|
|
65
|
+
task.threshold = 100
|
12
66
|
end
|
67
|
+
task(default: :yardstick_verify)
|
13
68
|
|
14
|
-
|
69
|
+
# Require tests, syntax and documentation to pass before building
|
70
|
+
task(build: %i[spec rubocop yard yardstick_measure yardstick_verify])
|
15
71
|
|
16
|
-
|
72
|
+
# Require a succesful build before release
|
73
|
+
task(release: %i[build])
|
@@ -10,30 +10,130 @@ module ZombieBattleground
|
|
10
10
|
@client = ZombieBattleground::Api::Client.new
|
11
11
|
|
12
12
|
class << self
|
13
|
-
|
14
|
-
|
13
|
+
##
|
14
|
+
# Queries for Decks
|
15
|
+
#
|
16
|
+
# @param id [Integer] Optionally filter on Deck id
|
17
|
+
# @param user_id [String] Optionally filter on Deck user_id
|
18
|
+
# @param deck_id [Integer] Optionally filter on Deck deck_id
|
19
|
+
# @param name [String] Optionally filter on Deck name
|
20
|
+
# @param hero_id [Integer] Optionally filter on Deck hero_id
|
21
|
+
# @param primary_skill_id [Integer] Optionally filter on Deck primary_skill_id
|
22
|
+
# @param secondary_skill_id [Integer] Optionally filter on Deck secondary_skill_id
|
23
|
+
# @param version [String] Optionally filter on Deck version
|
24
|
+
# @param page [Integer] Used for pagination of query results
|
25
|
+
# @param limit [Integer] Used for pagination of query results. Max 100
|
26
|
+
#
|
27
|
+
# @return [ZombieBattleground::Api::Responses::GetDecksResponse]
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# response = ZombieBattleground::Api.decks(limit: 1)
|
31
|
+
# response # => ZombieBattleground::Api::Responses::GetDecksResponse
|
32
|
+
#
|
33
|
+
# @api public
|
15
34
|
def decks(**args)
|
16
|
-
client.decks(**args)
|
35
|
+
@client.decks(**args)
|
17
36
|
end
|
18
37
|
|
38
|
+
##
|
39
|
+
# Queries for a Deck
|
40
|
+
#
|
41
|
+
# @param id [Integer] Deck id to request
|
42
|
+
#
|
43
|
+
# @return [ZombieBattleground::Api::Responses::GetDeckResponse]
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# response = ZombieBattleground::Api.deck(id: 1813)
|
47
|
+
# response # => ZombieBattleground::Api::Responses::GetDeckResponse
|
48
|
+
#
|
49
|
+
# @api public
|
19
50
|
def deck(**args)
|
20
|
-
client.deck(**args)
|
51
|
+
@client.deck(**args)
|
21
52
|
end
|
22
53
|
|
54
|
+
##
|
55
|
+
# Queries for Matches
|
56
|
+
#
|
57
|
+
# @param id [Integer] Optionally filter on Match id
|
58
|
+
# @param player1_id [String] Optionally filter on Match player1_id
|
59
|
+
# @param player2_id [String] Optionally filter on Match player2_id
|
60
|
+
# @param status [String] Optionally filter on Match status
|
61
|
+
# @param version [String] Optionally filter on Match version
|
62
|
+
# @param winner_id [String] Optionally filter on Match winner_id
|
63
|
+
# @param page [Integer] Used for pagination of query results
|
64
|
+
# @param limit [Integer] Used for pagination of query results. Max 100
|
65
|
+
#
|
66
|
+
# @return [ZombieBattleground::Api::Responses::GetMatchesResponse]
|
67
|
+
#
|
68
|
+
# @example
|
69
|
+
# response = ZombieBattleground::Api.matches(limit: 1)
|
70
|
+
# response # => ZombieBattleground::Api::Responses::GetMatchesResponse
|
71
|
+
#
|
72
|
+
# @api public
|
23
73
|
def matches(**args)
|
24
|
-
client.matches(**args)
|
74
|
+
@client.matches(**args)
|
25
75
|
end
|
26
76
|
|
77
|
+
##
|
78
|
+
# Queries for a Match
|
79
|
+
#
|
80
|
+
# @param id [Integer] Match id to request
|
81
|
+
#
|
82
|
+
# @return [ZombieBattleground::Api::Responses::GetMatchResponse]
|
83
|
+
#
|
84
|
+
# @example
|
85
|
+
# response = ZombieBattleground::Api.match(id: 1454)
|
86
|
+
# response # => ZombieBattleground::Api::Responses::GetMatchResponse
|
87
|
+
#
|
88
|
+
# @api public
|
27
89
|
def match(**args)
|
28
|
-
client.match(**args)
|
90
|
+
@client.match(**args)
|
29
91
|
end
|
30
92
|
|
93
|
+
##
|
94
|
+
# Queries for Cards
|
95
|
+
#
|
96
|
+
# @param id [Integer] Optionally filter on Card id
|
97
|
+
# @param mould_id [String] Optionally filter on Card mould_id
|
98
|
+
# @param version [String] Optionally filter on Card version
|
99
|
+
# @param kind [String] Optionally filter on Card kind
|
100
|
+
# @param set [String] Optionally filter on Card set
|
101
|
+
# @param name [String] Optionally filter on Card name
|
102
|
+
# @param rank [String] Optionally filter on Card rank
|
103
|
+
# @param type [String] Optionally filter on Card type
|
104
|
+
# @param rarity [String] Optionally filter on Card rarity
|
105
|
+
# @param damage [Integer] Optionally filter on Card damage
|
106
|
+
# @param health [Integer] Optionally filter on Card health
|
107
|
+
# @param cost [Integer] Optionally filter on Card cost
|
108
|
+
# @param page [Integer] Used for pagination of query results
|
109
|
+
# @param limit [Integer] Used for pagination of query results. Max 100
|
110
|
+
#
|
111
|
+
# @return [ZombieBattleground::Api::Responses::GetCardsResponse]
|
112
|
+
#
|
113
|
+
# @example
|
114
|
+
# response = ZombieBattleground::Api.cards(limit: 1)
|
115
|
+
# response # => ZombieBattleground::Api::Responses::GetCardsResponse
|
116
|
+
#
|
117
|
+
# @api public
|
31
118
|
def cards(**args)
|
32
|
-
client.cards(**args)
|
119
|
+
@client.cards(**args)
|
33
120
|
end
|
34
121
|
|
122
|
+
##
|
123
|
+
# Queries for a Card
|
124
|
+
#
|
125
|
+
# @param mould_id [String] Optionally filter on Card mould_id
|
126
|
+
# @param version [String] Optionally filter on Card version
|
127
|
+
#
|
128
|
+
# @return [ZombieBattleground::Api::Responses::GetCardResponse]
|
129
|
+
#
|
130
|
+
# @example
|
131
|
+
# response = ZombieBattleground::Api.card(mould_id: 2, version: 'v3')
|
132
|
+
# response # => ZombieBattleground::Api::Responses::GetCardResponse
|
133
|
+
#
|
134
|
+
# @api public
|
35
135
|
def card(**args)
|
36
|
-
client.card(**args)
|
136
|
+
@client.card(**args)
|
37
137
|
end
|
38
138
|
end
|
39
139
|
end
|
@@ -22,93 +22,227 @@ module ZombieBattleground
|
|
22
22
|
##
|
23
23
|
# The API Client for Zombie Battleground
|
24
24
|
class Client
|
25
|
+
##
|
26
|
+
# Creates a new client
|
27
|
+
#
|
28
|
+
# @return [void]
|
29
|
+
#
|
30
|
+
# @example
|
31
|
+
# client = ZombieBattleground::Api::Client.new
|
32
|
+
#
|
33
|
+
# @api public
|
25
34
|
def initialize
|
26
35
|
@endpoint = 'https://api.loom.games/zb'
|
27
36
|
@api_version = 'v1'
|
28
37
|
end
|
29
38
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
##
|
40
|
+
# Queries for Decks
|
41
|
+
#
|
42
|
+
# @param id [Integer] Optionally filter on Deck id
|
43
|
+
# @param user_id [String] Optionally filter on Deck user_id
|
44
|
+
# @param deck_id [Integer] Optionally filter on Deck deck_id
|
45
|
+
# @param name [String] Optionally filter on Deck name
|
46
|
+
# @param hero_id [Integer] Optionally filter on Deck hero_id
|
47
|
+
# @param primary_skill_id [Integer] Optionally filter on Deck primary_skill_id
|
48
|
+
# @param secondary_skill_id [Integer] Optionally filter on Deck secondary_skill_id
|
49
|
+
# @param version [String] Optionally filter on Deck version
|
50
|
+
# @param page [Integer] Used for pagination of query results
|
51
|
+
# @param limit [Integer] Used for pagination of query results. Max 100
|
52
|
+
#
|
53
|
+
# @return [ZombieBattleground::Api::Responses::GetDecksResponse]
|
54
|
+
#
|
55
|
+
# @raise [ZombieBattleground::Api::Errors::InvalidInput, ZombieBattleground::Api::Errors::InvalidResponse]
|
56
|
+
#
|
57
|
+
# @example
|
58
|
+
# response = client.decks(limit: 1)
|
59
|
+
# response # => ZombieBattleground::Api::Responses::GetDecksResponse
|
60
|
+
#
|
61
|
+
# @api public
|
41
62
|
def decks(**args)
|
42
|
-
request = ZombieBattleground::Api::GetDecksRequest.new
|
63
|
+
request = ZombieBattleground::Api::Requests::GetDecksRequest.new
|
43
64
|
args.each { |key, val| request.send("#{key}=", val) }
|
44
65
|
raise ZombieBattleground::Api::Errors::InvalidInput, request.errors.messages unless request.valid?
|
45
66
|
|
46
67
|
response = connection(uri: request.uri, params: request.params).get
|
47
|
-
decks = ZombieBattleground::Api::GetDecksResponse.new(response)
|
68
|
+
decks = ZombieBattleground::Api::Responses::GetDecksResponse.new(response)
|
48
69
|
raise ZombieBattleground::Api::Errors::InvalidResponse.new(response, decks) unless decks.valid?
|
49
70
|
|
50
71
|
decks
|
51
72
|
end
|
52
73
|
|
74
|
+
##
|
75
|
+
# Queries for a Deck
|
76
|
+
#
|
77
|
+
# @param id [Integer] Deck id to request
|
78
|
+
#
|
79
|
+
# @return [ZombieBattleground::Api::Responses::GetDeckResponse]
|
80
|
+
#
|
81
|
+
# @raise [ZombieBattleground::Api::Errors::InvalidInput, ZombieBattleground::Api::Errors::InvalidResponse]
|
82
|
+
#
|
83
|
+
# @example
|
84
|
+
# response = client.deck(id: 1813)
|
85
|
+
# response # => ZombieBattleground::Api::Responses::GetDeckResponse
|
86
|
+
#
|
87
|
+
# @api public
|
53
88
|
def deck(**args)
|
54
|
-
request = ZombieBattleground::Api::GetDeckRequest.new
|
89
|
+
request = ZombieBattleground::Api::Requests::GetDeckRequest.new
|
55
90
|
args.each { |key, val| request.send("#{key}=", val) }
|
56
91
|
raise ZombieBattleground::Api::Errors::InvalidInput, request.errors.messages unless request.valid?
|
57
92
|
|
58
93
|
response = connection(uri: request.uri, params: request.params).get
|
59
|
-
deck = ZombieBattleground::Api::GetDeckResponse.new(response)
|
94
|
+
deck = ZombieBattleground::Api::Responses::GetDeckResponse.new(response)
|
60
95
|
raise ZombieBattleground::Api::Errors::InvalidResponse.new(response, deck) unless deck.valid?
|
61
96
|
|
62
97
|
deck
|
63
98
|
end
|
64
99
|
|
100
|
+
##
|
101
|
+
# Queries for Matches
|
102
|
+
#
|
103
|
+
# @param id [Integer] Optionally filter on Match id
|
104
|
+
# @param player1_id [String] Optionally filter on Match player1_id
|
105
|
+
# @param player2_id [String] Optionally filter on Match player2_id
|
106
|
+
# @param status [String] Optionally filter on Match status
|
107
|
+
# @param version [String] Optionally filter on Match version
|
108
|
+
# @param winner_id [String] Optionally filter on Match winner_id
|
109
|
+
# @param page [Integer] Used for pagination of query results
|
110
|
+
# @param limit [Integer] Used for pagination of query results. Max 100
|
111
|
+
#
|
112
|
+
# @return [ZombieBattleground::Api::Responses::GetMatchesResponse]
|
113
|
+
#
|
114
|
+
# @raise [ZombieBattleground::Api::Errors::InvalidInput, ZombieBattleground::Api::Errors::InvalidResponse]
|
115
|
+
#
|
116
|
+
# @example
|
117
|
+
# response = client.matches(limit: 1)
|
118
|
+
# response # => ZombieBattleground::Api::Responses::GetMatchesResponse
|
119
|
+
#
|
120
|
+
# @api public
|
65
121
|
def matches(**args)
|
66
|
-
request = ZombieBattleground::Api::GetMatchesRequest.new
|
122
|
+
request = ZombieBattleground::Api::Requests::GetMatchesRequest.new
|
67
123
|
args.each { |key, val| request.send("#{key}=", val) }
|
68
124
|
raise ZombieBattleground::Api::Errors::InvalidInput, request.errors.messages unless request.valid?
|
69
125
|
|
70
126
|
response = connection(uri: request.uri, params: request.params).get
|
71
|
-
matches = ZombieBattleground::Api::GetMatchesResponse.new(response)
|
127
|
+
matches = ZombieBattleground::Api::Responses::GetMatchesResponse.new(response)
|
72
128
|
raise ZombieBattleground::Api::Errors::InvalidResponse.new(response, matches) unless matches.valid?
|
73
129
|
|
74
130
|
matches
|
75
131
|
end
|
76
132
|
|
133
|
+
##
|
134
|
+
# Queries for a Match
|
135
|
+
#
|
136
|
+
# @param id [Integer] Match id to request
|
137
|
+
#
|
138
|
+
# @return [ZombieBattleground::Api::Responses::GetMatchResponse]
|
139
|
+
#
|
140
|
+
# @raise [ZombieBattleground::Api::Errors::InvalidInput, ZombieBattleground::Api::Errors::InvalidResponse]
|
141
|
+
#
|
142
|
+
# @example
|
143
|
+
# response = client.match(id: 1454)
|
144
|
+
# response # => ZombieBattleground::Api::Responses::GetMatchResponse
|
145
|
+
#
|
146
|
+
# @api public
|
77
147
|
def match(**args)
|
78
|
-
request = ZombieBattleground::Api::GetMatchRequest.new
|
148
|
+
request = ZombieBattleground::Api::Requests::GetMatchRequest.new
|
79
149
|
args.each { |key, val| request.send("#{key}=", val) }
|
80
150
|
raise ZombieBattleground::Api::Errors::InvalidInput, request.errors.messages unless request.valid?
|
81
151
|
|
82
152
|
response = connection(uri: request.uri, params: request.params).get
|
83
|
-
match = ZombieBattleground::Api::GetMatchResponse.new(response)
|
153
|
+
match = ZombieBattleground::Api::Responses::GetMatchResponse.new(response)
|
84
154
|
raise ZombieBattleground::Api::Errors::InvalidResponse.new(response, match) unless match.valid?
|
85
155
|
|
86
156
|
match
|
87
157
|
end
|
88
158
|
|
159
|
+
##
|
160
|
+
# Queries for Cards
|
161
|
+
#
|
162
|
+
# @param id [Integer] Optionally filter on Card id
|
163
|
+
# @param mould_id [String] Optionally filter on Card mould_id
|
164
|
+
# @param version [String] Optionally filter on Card version
|
165
|
+
# @param kind [String] Optionally filter on Card kind
|
166
|
+
# @param set [String] Optionally filter on Card set
|
167
|
+
# @param name [String] Optionally filter on Card name
|
168
|
+
# @param rank [String] Optionally filter on Card rank
|
169
|
+
# @param type [String] Optionally filter on Card type
|
170
|
+
# @param rarity [String] Optionally filter on Card rarity
|
171
|
+
# @param damage [Integer] Optionally filter on Card damage
|
172
|
+
# @param health [Integer] Optionally filter on Card health
|
173
|
+
# @param cost [Integer] Optionally filter on Card cost
|
174
|
+
# @param page [Integer] Used for pagination of query results
|
175
|
+
# @param limit [Integer] Used for pagination of query results. Max 100
|
176
|
+
#
|
177
|
+
# @return [ZombieBattleground::Api::Responses::GetCardsResponse]
|
178
|
+
#
|
179
|
+
# @raise [ZombieBattleground::Api::Errors::InvalidInput, ZombieBattleground::Api::Errors::InvalidResponse]
|
180
|
+
#
|
181
|
+
# @example
|
182
|
+
# response = client.cards(limit: 1)
|
183
|
+
# response # => ZombieBattleground::Api::Responses::GetCardsResponse
|
184
|
+
#
|
185
|
+
# @api public
|
89
186
|
def cards(**args)
|
90
|
-
request = ZombieBattleground::Api::GetCardsRequest.new
|
187
|
+
request = ZombieBattleground::Api::Requests::GetCardsRequest.new
|
91
188
|
args.each { |key, val| request.send("#{key}=", val) }
|
92
189
|
raise ZombieBattleground::Api::Errors::InvalidInput, request.errors.messages unless request.valid?
|
93
190
|
|
94
191
|
response = connection(uri: request.uri, params: request.params).get
|
95
|
-
cards = ZombieBattleground::Api::GetCardsResponse.new(response)
|
192
|
+
cards = ZombieBattleground::Api::Responses::GetCardsResponse.new(response)
|
96
193
|
raise ZombieBattleground::Api::Errors::InvalidResponse.new(response, cards) unless cards.valid?
|
97
194
|
|
98
195
|
cards
|
99
196
|
end
|
100
197
|
|
198
|
+
##
|
199
|
+
# Queries for a Card
|
200
|
+
#
|
201
|
+
# @param mould_id [String] Optionally filter on Card mould_id
|
202
|
+
# @param version [String] Optionally filter on Card version
|
203
|
+
#
|
204
|
+
# @return [ZombieBattleground::Api::Responses::GetCardResponse]
|
205
|
+
#
|
206
|
+
# @raise [ZombieBattleground::Api::Errors::InvalidInput, ZombieBattleground::Api::Errors::InvalidResponse]
|
207
|
+
#
|
208
|
+
# @example
|
209
|
+
# response = client.card(mould_id: 2, version: 'v3')
|
210
|
+
# response # => ZombieBattleground::Api::Responses::GetCardResponse
|
211
|
+
#
|
212
|
+
# @api public
|
101
213
|
def card(**args)
|
102
|
-
request = ZombieBattleground::Api::GetCardRequest.new
|
214
|
+
request = ZombieBattleground::Api::Requests::GetCardRequest.new
|
103
215
|
args.each { |key, val| request.send("#{key}=", val) }
|
104
216
|
raise ZombieBattleground::Api::Errors::InvalidInput, request.errors.messages unless request.valid?
|
105
217
|
|
106
218
|
response = connection(uri: request.uri, params: request.params).get
|
107
|
-
card = ZombieBattleground::Api::GetCardResponse.new(response)
|
219
|
+
card = ZombieBattleground::Api::Responses::GetCardResponse.new(response)
|
108
220
|
raise ZombieBattleground::Api::Errors::InvalidResponse.new(response, card) unless card.valid?
|
109
221
|
|
110
222
|
card
|
111
223
|
end
|
224
|
+
|
225
|
+
private
|
226
|
+
|
227
|
+
##
|
228
|
+
# Creates a new Faraday connection
|
229
|
+
#
|
230
|
+
# @param uri [String] the URI to append to the endpoint and API version
|
231
|
+
# @param params [Hash] the query paramaters for the request
|
232
|
+
#
|
233
|
+
# @return [Faraday::Connection]
|
234
|
+
#
|
235
|
+
# @api private
|
236
|
+
def connection(uri:, params:)
|
237
|
+
Faraday.new(
|
238
|
+
url: "#{@endpoint}/#{@api_version}/#{uri}",
|
239
|
+
params: params,
|
240
|
+
headers: {
|
241
|
+
'User-Agent' => "RubyGem-zombie_battleground-api_#{VERSION}",
|
242
|
+
'Content-Type' => 'application/json'
|
243
|
+
}
|
244
|
+
)
|
245
|
+
end
|
112
246
|
end
|
113
247
|
end
|
114
248
|
end
|