binarybeast 0.1.5.pre → 0.2.0.pre
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.
- data/.gitignore +1 -0
- data/README.md +17 -0
- data/binarybeast.gemspec +1 -1
- data/lib/binarybeast.rb +29 -14
- data/lib/binarybeast/constants.rb +32 -0
- data/lib/binarybeast/service.rb +60 -0
- data/lib/binarybeast/team.rb +1 -1
- data/lib/binarybeast/tournament.rb +264 -0
- data/lib/binarybeast/version.rb +3 -3
- data/spec/binarybeast_spec.rb +3 -3
- data/spec/team_spec.rb +1 -1
- data/spec/tourney_spec.rb +56 -53
- metadata +5 -3
- data/lib/binarybeast/tourney.rb +0 -271
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -66,6 +66,14 @@ more to come soon....
|
|
66
66
|
|
67
67
|
## Some stuff you should know
|
68
68
|
|
69
|
+
### Eigenclass: Tourney
|
70
|
+
|
71
|
+
There is an eigenclass of the Tourney Class. Functions are
|
72
|
+
|
73
|
+
.list
|
74
|
+
.listpopular
|
75
|
+
.load
|
76
|
+
|
69
77
|
### :force => true
|
70
78
|
|
71
79
|
The BinaryBeast API sends back JSON from every request. However, if you use this gem we catch the JSON Data and proccess it. If you want to have a direct response from the API you can go with something like this:
|
@@ -82,6 +90,15 @@ the :force options is currently available to almost every function, the exceptio
|
|
82
90
|
|
83
91
|
## Changelog
|
84
92
|
|
93
|
+
### Version: 0.1.5.pre
|
94
|
+
|
95
|
+
* Added list to eigenclass. It lists tourneys that you've created. Example: tourneys = Binarybeast::Tourney.list
|
96
|
+
* Added listpopular to eigenclass. It lists popular tourney. Example: tourneys = Binarybeast::Tourney.listpopular
|
97
|
+
|
98
|
+
### Version: 0.1.4.pre
|
99
|
+
|
100
|
+
* Fixed a typo in some tests.
|
101
|
+
|
85
102
|
### Version: 0.1.3.pre
|
86
103
|
|
87
104
|
* Added Eigenclass to Tourney, so you can call Binarybeast::Tourney.load(:id => "").
|
data/binarybeast.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'binarybeast/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "binarybeast"
|
8
|
-
gem.version =
|
8
|
+
gem.version = BinaryBeast::VERSION
|
9
9
|
gem.authors = ["Crispin Schaeffler"]
|
10
10
|
gem.email = ["crispinschaeffler@googlemail.com"]
|
11
11
|
gem.description = %q{Ruby gem to access the binary beast api.}
|
data/lib/binarybeast.rb
CHANGED
@@ -10,25 +10,30 @@ require "HTTParty"
|
|
10
10
|
# ---------------------
|
11
11
|
# does contain all the classes that interact with binarybeast api.
|
12
12
|
|
13
|
-
module
|
13
|
+
module BinaryBeast
|
14
14
|
include HTTParty
|
15
15
|
# Base URI for the BinaryBeast API
|
16
|
-
base_uri 'https://binarybeast.com/
|
16
|
+
base_uri 'https://api.binarybeast.com/'
|
17
17
|
# Set HTTParty standard format to JSON, its standard what binarybeast api returns.
|
18
18
|
format :json
|
19
19
|
# Default api_key, this one is taken from my personal account.
|
20
|
-
|
20
|
+
# @todo the api key should not be initialized with a personal account for the public release,
|
21
|
+
# in the future, use the test account api if anything: e17d31bfcbedd1c39bcb018c5f0d0fbf.4dcb36f5cc0d74.24632846
|
22
|
+
@@api_key = 'e17d31bfcbedd1c39bcb018c5f0d0fbf.4dcb36f5cc0d74.24632846'
|
23
|
+
|
24
|
+
# Autoload the service classes
|
25
|
+
require 'binarybeast/constants'
|
26
|
+
autoload :Service, 'binarybeast/service'
|
27
|
+
autoload :Tournament, 'binarybeast/tournament'
|
28
|
+
autoload :Team, 'binarybeast/team'
|
29
|
+
autoload :Game, 'binarybeast/game'
|
21
30
|
|
22
|
-
# Autoload Tourney Class when needed
|
23
|
-
autoload :Tourney, 'binarybeast/tourney'
|
24
|
-
# Autoload Team Class when needed
|
25
|
-
autoload :Team, 'binarybeast/team'
|
26
31
|
|
27
32
|
# Getter for api_key Variable
|
28
33
|
def self.api_key
|
29
34
|
@@api_key
|
30
35
|
end
|
31
|
-
|
36
|
+
|
32
37
|
# Setter for api_key Variable
|
33
38
|
def self.api_key=(api_key)
|
34
39
|
@@api_key=api_key
|
@@ -37,14 +42,24 @@ module Binarybeast
|
|
37
42
|
# Call
|
38
43
|
# Method
|
39
44
|
# ------------
|
40
|
-
# Raw Call Method for those who want to make raw calls on the API of Binarybeast.
|
45
|
+
# Raw Call Method for those who want to make raw calls on the API of Binarybeast. api_key will be taken from the module variable
|
41
46
|
# Example:
|
42
|
-
# tourney = Binarybeast.call(
|
47
|
+
# tourney = Binarybeast.call('Tourney.TourneyCreate.Create', :title => "Test")
|
43
48
|
# ------------
|
44
49
|
|
45
|
-
def self.call(options={})
|
46
|
-
options.merge!({
|
47
|
-
|
50
|
+
def self.call(service, options={})
|
51
|
+
options.merge!({
|
52
|
+
:api_key => @@api_key,
|
53
|
+
:api_use_underscores => true,
|
54
|
+
:api_service => service,
|
55
|
+
:api_agent => "BinaryBeast API Ruby: Version #{BinaryBeast::VERSION}"
|
56
|
+
})
|
57
|
+
|
58
|
+
response = self.get('', :query => options)
|
59
|
+
|
60
|
+
yield response if block_given?
|
61
|
+
return response
|
62
|
+
|
48
63
|
end
|
49
64
|
|
50
|
-
end
|
65
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module BinaryBeast
|
2
|
+
|
3
|
+
# Constants
|
4
|
+
# ---------------------
|
5
|
+
BRACKET_GROUPS = 0
|
6
|
+
BRACKET_WINNERS = 1
|
7
|
+
BRACKET_LOSERS = 2
|
8
|
+
BRACKET_FINALS = 3
|
9
|
+
BRACKET_BRONZE = 4
|
10
|
+
# ---------------------
|
11
|
+
ELIMINATION_SINGLE = 1
|
12
|
+
ELIMINATION_DOUBLE = 2
|
13
|
+
# ---------------------
|
14
|
+
# Brackets
|
15
|
+
TOURNAMENT_TYPE_BRACKETS = 0
|
16
|
+
# Round Robin -> Brackets
|
17
|
+
TOURNAMENT_TYPE_CUP = 1
|
18
|
+
# ---------------------
|
19
|
+
SEEDING_RANDOM = 'random'
|
20
|
+
SEEDING_SPORTS = 'sports'
|
21
|
+
SEEDING_BALANCED = 'balanced'
|
22
|
+
SEEDING_MANUAL = 'manual'
|
23
|
+
# ---------------------
|
24
|
+
REPLAY_DOWNLOADS_DISABLED = 0
|
25
|
+
REPLAY_DOWNLOADS_ENABLED = 1
|
26
|
+
REPLAY_DOWNLOADS_POST_COMPLETE = 2
|
27
|
+
# ---------------------
|
28
|
+
REPLAY_UPLOADS_DISABLED = 0
|
29
|
+
REPLAY_UPLOADS_OPTIONAL = 1
|
30
|
+
REPLAY_UPLOADS_MANDATORY = 2
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module BinaryBeast
|
2
|
+
|
3
|
+
# Service
|
4
|
+
# Class
|
5
|
+
# ---------------
|
6
|
+
# This is the base service class that all other classes inherit from, it provides the basic
|
7
|
+
# API interaction functionality, in order to make this API library a bit more DRY
|
8
|
+
# ---------------
|
9
|
+
# gives you a Service object
|
10
|
+
|
11
|
+
class Service
|
12
|
+
|
13
|
+
|
14
|
+
# convertKeys
|
15
|
+
# Method
|
16
|
+
# ---------------
|
17
|
+
# This method used in conjuction with assignAttributes, will convert all keys of a hash returned by BinaryBeast,
|
18
|
+
# from strings to symbols
|
19
|
+
# For example in Tournament::initialize({:title=>'title of the tour'}), :title will automatically be assigned to this.title = 'Title of the tour'
|
20
|
+
# ---------------
|
21
|
+
def convertHashKeys(hash)
|
22
|
+
|
23
|
+
hash.inject({}) do |mem, (key, value)|
|
24
|
+
mem[key.to_sym] = value
|
25
|
+
mem
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
# assignAttributes
|
32
|
+
# Method
|
33
|
+
# ---------------
|
34
|
+
# Used by the service class constructors to iterate through inputs to quickly assign the values
|
35
|
+
# into the instance variables
|
36
|
+
# For example in Tournament::initialize({:title=>'title of the tour'}), :title will automatically be assigned to this.title = 'Title of the tour'
|
37
|
+
# ---------------
|
38
|
+
def assignAttributes(values = {})
|
39
|
+
values.each_pair do |key, value|
|
40
|
+
# Continue only if this method has an attribute setter for this value
|
41
|
+
if respond_to?("#{key}=")
|
42
|
+
self.send("#{key}=", value)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# getAttributes
|
48
|
+
# Method
|
49
|
+
# ---------------
|
50
|
+
# Used by service methods for calling update services without having
|
51
|
+
# to type out every single attribute in the code, once they're listed as
|
52
|
+
# an attr_accessor, it will be sent - if there happen to be extraneous values, it won't make any difference
|
53
|
+
# ---------------
|
54
|
+
def getAttributes()
|
55
|
+
Hash[instance_variables.map {|attr| [attr.slice(1..-1), instance_variable_get(attr)] } ]
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
data/lib/binarybeast/team.rb
CHANGED
@@ -0,0 +1,264 @@
|
|
1
|
+
module BinaryBeast
|
2
|
+
# Tourney
|
3
|
+
# Class
|
4
|
+
# ---------------
|
5
|
+
# This is the Tourney service class. It will be used to most. It gives you a brand new Tourney object to call methods on.
|
6
|
+
# Example:
|
7
|
+
# tourney = Binarybeast::Tourney.new("Gamkoi Test")
|
8
|
+
# ---------------
|
9
|
+
# gives you a tourney object
|
10
|
+
|
11
|
+
class Tournament < BinaryBeast::Service
|
12
|
+
|
13
|
+
attr_accessor :api_key, :id, :tourney_id, :title, :public, :display_name, :url,
|
14
|
+
:game_code, :game, :game_style, :game_icon,
|
15
|
+
:status, :type_id, :elimination, :teams_confirmed_count, :teams_joined_count,
|
16
|
+
:team_mode, :teams_from_group, :max_teams, :group_count,
|
17
|
+
:view_count, :date_start, :location,
|
18
|
+
:replay_uploads, :replay_downloads,
|
19
|
+
:description, :return_data
|
20
|
+
|
21
|
+
|
22
|
+
# Default values for each attribute
|
23
|
+
DEFAULTS = {
|
24
|
+
:id => nil,
|
25
|
+
:title => 'Gamkoi DevTest', #"BinaryBeast API Ruby (#{BinaryBeast::VERSION}) Test Tournament",
|
26
|
+
:game_code => 'misc',
|
27
|
+
:game => 'Misc.',
|
28
|
+
:type_id => BinaryBeast::TOURNAMENT_TYPE_BRACKETS,
|
29
|
+
:elimination => BinaryBeast::ELIMINATION_SINGLE,
|
30
|
+
:team_mode => 1,
|
31
|
+
:group_count => 1,
|
32
|
+
:teams_from_group => 2,
|
33
|
+
:date_start => Time.new.strftime("%Y-%m-%d"),
|
34
|
+
:location => '',
|
35
|
+
:max_teams => 16,
|
36
|
+
:replay_uploads => BinaryBeast::REPLAY_UPLOADS_OPTIONAL,
|
37
|
+
:replay_downloads => BinaryBeast::REPLAY_DOWNLOADS_ENABLED,
|
38
|
+
:description => nil,
|
39
|
+
:return_data => 0,
|
40
|
+
}
|
41
|
+
|
42
|
+
# Tourney Eigenclass
|
43
|
+
# Eigenclass
|
44
|
+
# ----------------
|
45
|
+
# provides some functionality in order to allow certain things before creating a tourney.
|
46
|
+
# ----------------
|
47
|
+
|
48
|
+
class << self
|
49
|
+
|
50
|
+
# Load
|
51
|
+
# Method
|
52
|
+
# ----------------
|
53
|
+
# Loads a tourney from binarybeast and returns an tourney object.
|
54
|
+
# Example:
|
55
|
+
# @tourney = Binarybest::Tourney.load(:id => "xSC21212194")
|
56
|
+
# ----------------
|
57
|
+
|
58
|
+
def load(options={:force => false, :id => 'xSC21212194'})
|
59
|
+
|
60
|
+
#Use this test tournament as a default value for now
|
61
|
+
id = options[:id] || options[:tourney_id] || 'xSC21212194'
|
62
|
+
|
63
|
+
BinaryBeast.call('Tourney.TourneyLoad.Info', :tourney_id => id) do |response|
|
64
|
+
|
65
|
+
return false if response['result'] != 200
|
66
|
+
return response if options[:force]
|
67
|
+
|
68
|
+
return BinaryBeast::Tournament.new(response['tourney_info'])
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
# List
|
77
|
+
# Method
|
78
|
+
# ----------------
|
79
|
+
# Loads the List of Tourneys you've created. Returns an array if successful, else false
|
80
|
+
# Example:
|
81
|
+
# @tourneylist = BinaryBeast::Tourney.list
|
82
|
+
# ----------------
|
83
|
+
|
84
|
+
def list(options={:order => 'date_start'})
|
85
|
+
BinaryBeast.call('Tourney.TourneyList.Creator', {:order => 'date_start'}.merge(options)) do |response|
|
86
|
+
return response if options[:force]
|
87
|
+
return false if response['result'] != 200
|
88
|
+
|
89
|
+
# return an array of initialized tournaments instead of just the raw data, unless asked otherwise
|
90
|
+
return response['list'].map do |tourney|
|
91
|
+
BinaryBeast::Tournament.new(tourney)
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
# end Tourney.TourneyList.Popular
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
# ListPopular
|
100
|
+
# Method
|
101
|
+
# ----------------
|
102
|
+
# Loads the List of Popular Tourneys. Retuns an hash if successful, else false
|
103
|
+
# Example:
|
104
|
+
# @tourneylist = Binarybeast::Tourney.listpopular
|
105
|
+
# ----------------
|
106
|
+
|
107
|
+
def listPopular(options={:limit => 30})
|
108
|
+
|
109
|
+
BinaryBeast.call('Tourney.TourneyList.Popular', {:limit => 3}.merge(options)) do |response|
|
110
|
+
return false if response['result'] != 200
|
111
|
+
return response if options[:force]
|
112
|
+
|
113
|
+
# return an array of initialized tournaments instead of just the raw data, unless asked otherwise
|
114
|
+
return response['list'].map do |tourney|
|
115
|
+
BinaryBeast::Tournament.new(tourney)
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
# end Tourney.TourneyList.Popular
|
120
|
+
|
121
|
+
end
|
122
|
+
# end listPopular
|
123
|
+
|
124
|
+
end
|
125
|
+
# END EIGENCLASS
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
# Constructor
|
130
|
+
# Method
|
131
|
+
# ----------------
|
132
|
+
# all tourney attributes can be given here. The title parameter is needed, all else is optional.
|
133
|
+
# Example:
|
134
|
+
# Binarybeast::Tourney.new(:title => "Gamkoi DevCup")
|
135
|
+
# ----------------
|
136
|
+
|
137
|
+
def initialize(options={})
|
138
|
+
# Merge the default values and assign all values locally using the base serice classes attribute assigner, saves loads of typing :)
|
139
|
+
options[:id] = options[:id] || options['id'] || options[:tourney_id] || options['tourney_id']
|
140
|
+
assignAttributes(Tournament::DEFAULTS.merge(options))
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
# Update
|
145
|
+
# Method
|
146
|
+
# ----------------
|
147
|
+
# Pushes the attributes from the object to the binarybeast api. Pushes updates from object to Binarybeast
|
148
|
+
# Example:
|
149
|
+
# @tourney = Binarybeast::Tourney.new(:title => "lol")
|
150
|
+
# @tourney.title = 'New Title!'
|
151
|
+
# @tourney.update
|
152
|
+
# ----------------
|
153
|
+
|
154
|
+
def update(options={:force => false})
|
155
|
+
response = BinaryBeast.call('Tourney.TourneyUpdate.Settings', getAttributes.merge({:tourney_id => self.id}) )
|
156
|
+
options[:force] ? response : response['result'] == 200 ? true : false
|
157
|
+
end
|
158
|
+
|
159
|
+
# Create
|
160
|
+
# Method
|
161
|
+
# ----------------
|
162
|
+
# Creates the tournament object at binarybeast. You want to call this once after setting up your local Tourney object.
|
163
|
+
# Example:
|
164
|
+
# @tourney = Binarybeast::Tourny.new
|
165
|
+
# @tourney.title = "Blabla"
|
166
|
+
# @tourney.description = "Changing some attributes locally..."
|
167
|
+
# @tourney.create
|
168
|
+
# ----------------
|
169
|
+
|
170
|
+
def create(options={:force => false})
|
171
|
+
response = BinaryBeast.call('Tourney.TourneyCreate.Create', getAttributes)
|
172
|
+
self.id = response['tourney_id'] if response['result'] == 200
|
173
|
+
options[:force] ? response : response['result'] == 200 ? true : false
|
174
|
+
end
|
175
|
+
|
176
|
+
# Delete
|
177
|
+
# Method
|
178
|
+
# ----------------
|
179
|
+
# Deletes the tourney object from binarybeast. Does not delete the tourney object itself locally.
|
180
|
+
# Example:
|
181
|
+
# @tourney = Binarybeast::Tourney.new(:title => "Test")
|
182
|
+
# @tourney.create
|
183
|
+
# @tourney.delete
|
184
|
+
# ----------------
|
185
|
+
|
186
|
+
def delete(options={:force => false})
|
187
|
+
response = BinaryBeast.call('Tourney.TourneyDelete.Delete', :tourney_id => self.id)
|
188
|
+
options[:force] ? response : response['result'] == 200 ? true : false
|
189
|
+
end
|
190
|
+
|
191
|
+
# Start
|
192
|
+
# Method
|
193
|
+
# ----------------
|
194
|
+
# Starts the object tourney on binarybeast.
|
195
|
+
# Example:
|
196
|
+
# @tourney = Binarybeast::Tourney.new(:title => "test")
|
197
|
+
# @tourney.create
|
198
|
+
# @tourney.start
|
199
|
+
# ----------------
|
200
|
+
|
201
|
+
def start(options={:force => false})
|
202
|
+
|
203
|
+
response = BinaryBeast.call('Tourney.TourneyStart.Start', {
|
204
|
+
:tourney_id => self.id,
|
205
|
+
:seeding => BinaryBeast::SEEDING_RANDOM
|
206
|
+
}.merge(options))
|
207
|
+
|
208
|
+
options[:force] ? response : response['result'] == 200 ? true : false
|
209
|
+
|
210
|
+
|
211
|
+
end
|
212
|
+
|
213
|
+
# Load
|
214
|
+
# Method
|
215
|
+
# ----------------
|
216
|
+
# Loads the information of a binarybeast tourney and saving it in the object. Pulling information - inverse of update
|
217
|
+
# Example:
|
218
|
+
# @tourney = Binarybeast::Tourney.new(:id => 'xSC21212194')
|
219
|
+
# @tourney.load
|
220
|
+
# ----------------
|
221
|
+
|
222
|
+
def load(options={:force => false})
|
223
|
+
|
224
|
+
response = BinaryBeast.call('Tourney.TourneyLoad.Info', {:tourney_id => self.id}.merge(options))
|
225
|
+
|
226
|
+
return response if options[:force]
|
227
|
+
return false if response['result']
|
228
|
+
|
229
|
+
self.assignAttributes(response['tourney_info'])
|
230
|
+
return true
|
231
|
+
end
|
232
|
+
|
233
|
+
# setBuilding
|
234
|
+
# Method
|
235
|
+
# ----------------
|
236
|
+
# Sets the status of the tourney correlating to the object to: Status: Building
|
237
|
+
# Example:
|
238
|
+
# @tourney = Binarybeast::Tourney.new
|
239
|
+
# @tourney.setBuilding
|
240
|
+
# ----------------
|
241
|
+
|
242
|
+
def setBuilding(options={:force => false})
|
243
|
+
response = BinaryBeast.call('Tourney.TourneySetStatus.Building', :tourney_id => self.id)
|
244
|
+
options[:force] ? response : response['result'] == 200 ? true : false
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
# setConfirmation
|
249
|
+
# Method
|
250
|
+
# ----------------
|
251
|
+
# Sets the status of the tourney correlating to the object to: Status: Confirmation
|
252
|
+
# Example:
|
253
|
+
# @tourney = BinaryBeast::Tourney.new
|
254
|
+
# @tourney.setConfirmation
|
255
|
+
# ----------------
|
256
|
+
|
257
|
+
def setConfirmation(options={:force => false})
|
258
|
+
response = BinaryBeast.call('Tourney.TourneySetStatus.Confirmation', :tourney_id => self.id)
|
259
|
+
options[:force] ? response : response['result'] == 200 ? true : false
|
260
|
+
end
|
261
|
+
|
262
|
+
end
|
263
|
+
# END Class Tournament
|
264
|
+
end
|
data/lib/binarybeast/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
1
|
+
module BinaryBeast
|
2
|
+
VERSION = "0.2.0.pre"
|
3
|
+
end
|
data/spec/binarybeast_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe BinaryBeast do
|
4
4
|
it "must have apikey variable" do
|
5
|
-
|
5
|
+
BinaryBeast.api_key.should == "3c8955130c6e1406420d6202649651fe.50c9faa593f9c6.00530099"
|
6
6
|
end
|
7
7
|
it "should have a raw call method" do
|
8
|
-
|
8
|
+
BinaryBeast.should respond_to(:call)
|
9
9
|
end
|
10
10
|
end
|
data/spec/team_spec.rb
CHANGED
data/spec/tourney_spec.rb
CHANGED
@@ -1,114 +1,117 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe BinaryBeast::Tournament do
|
4
4
|
before :all do
|
5
|
-
@
|
5
|
+
@tournament = BinaryBeast::Tournament.new(:title => 'Gamkoi DevTest Ruby', :description => 'This is a tourney created via the Gamkoi.com ruby gem.', :game_code => 'HotS')
|
6
6
|
end
|
7
7
|
describe "eigenclass" do
|
8
8
|
describe "list" do
|
9
|
-
it "should return
|
10
|
-
response =
|
11
|
-
response.should be_instance_of
|
9
|
+
it "should return array of tourneys" do
|
10
|
+
response = BinaryBeast::Tournament.list
|
11
|
+
response.should be_instance_of Array
|
12
12
|
end
|
13
13
|
end
|
14
|
-
describe "
|
14
|
+
describe "listPopular" do
|
15
15
|
it "should return list of popular tourneys" do
|
16
|
-
response =
|
17
|
-
response.should be_instance_of
|
16
|
+
response = BinaryBeast::Tournament.listPopular
|
17
|
+
response.should be_instance_of Array
|
18
18
|
end
|
19
19
|
end
|
20
20
|
describe "load" do
|
21
21
|
it "should load from eigenclass" do
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
tournament = BinaryBeast::Tournament.load(:id => @tournament.tourney_id)
|
23
|
+
tournament.should be_an_instance_of BinaryBeast::Tournament
|
24
|
+
tournament.title.should eq('Gamkoi DevTest Ruby')
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
28
28
|
describe "new" do
|
29
29
|
it "takes one to all parameters and returns an tourney object" do
|
30
|
-
@
|
30
|
+
@tournament.should be_an_instance_of BinaryBeast::Tournament
|
31
31
|
end
|
32
32
|
it "should respond to title" do
|
33
|
-
@
|
33
|
+
@tournament.title.should eq('Gamkoi DevTest Ruby')
|
34
34
|
end
|
35
35
|
it "should respond to description" do
|
36
|
-
@
|
36
|
+
@tournament.description.should eq('This is a tourney created via the Gamkoi.com ruby gem.')
|
37
37
|
end
|
38
38
|
it "should respond to all attributes" do
|
39
|
-
@
|
40
|
-
@
|
41
|
-
@
|
42
|
-
@
|
43
|
-
@
|
44
|
-
@
|
45
|
-
@
|
46
|
-
@
|
47
|
-
@
|
48
|
-
@
|
49
|
-
@
|
50
|
-
@
|
51
|
-
@
|
52
|
-
@
|
53
|
-
@
|
54
|
-
@
|
55
|
-
@
|
56
|
-
end
|
57
|
-
end
|
58
|
-
describe "update" do
|
59
|
-
it "should respond to update" do
|
60
|
-
@tourney.should respond_to(:update)
|
61
|
-
response = @tourney.update(:force => true)
|
62
|
-
response.should be_instance_of Hash
|
39
|
+
@tournament.should respond_to(:title)
|
40
|
+
@tournament.should respond_to(:id)
|
41
|
+
@tournament.should respond_to(:public)
|
42
|
+
@tournament.should respond_to(:game_code)
|
43
|
+
@tournament.should respond_to(:type_id)
|
44
|
+
@tournament.should respond_to(:elimination)
|
45
|
+
@tournament.should respond_to(:team_mode)
|
46
|
+
@tournament.should respond_to(:group_count)
|
47
|
+
@tournament.should respond_to(:teams_from_group)
|
48
|
+
@tournament.should respond_to(:date_start)
|
49
|
+
@tournament.should respond_to(:location)
|
50
|
+
@tournament.should respond_to(:max_teams)
|
51
|
+
@tournament.should respond_to(:replay_uploads)
|
52
|
+
@tournament.should respond_to(:replay_downloads)
|
53
|
+
@tournament.should respond_to(:description)
|
54
|
+
@tournament.should respond_to(:return_data)
|
55
|
+
@tournament.should respond_to(:api_key)
|
63
56
|
end
|
64
57
|
end
|
65
58
|
describe "create" do
|
66
59
|
it "should respond to publish" do
|
67
|
-
@
|
60
|
+
@tournament.should respond_to(:public)
|
68
61
|
end
|
69
62
|
it "should return parsed json array" do
|
70
|
-
@
|
63
|
+
@tournament.create.should eq(true)
|
71
64
|
end
|
72
65
|
it "should return forced broadcast" do
|
73
|
-
response = @
|
74
|
-
response[
|
66
|
+
response = @tournament.create(:force => true)
|
67
|
+
response['result'].should eq(200)
|
68
|
+
response.should be_instance_of Hash
|
69
|
+
end
|
70
|
+
end
|
71
|
+
describe "update" do
|
72
|
+
it "should respond to update" do
|
73
|
+
@tournament.should respond_to(:update)
|
74
|
+
response = @tournament.update(:force => true)
|
75
75
|
response.should be_instance_of Hash
|
76
76
|
end
|
77
77
|
end
|
78
78
|
describe "delete" do
|
79
79
|
it "should respond to delete" do
|
80
|
-
@
|
80
|
+
@tournament.should respond_to(:delete)
|
81
81
|
end
|
82
82
|
it "should delete the tourney" do
|
83
|
-
|
84
|
-
|
85
|
-
response =
|
83
|
+
tournament = BinaryBeast::Tournament.new(:title => "Delete Test")
|
84
|
+
tournament.create
|
85
|
+
response = tournament.delete(:force => true)
|
86
86
|
response.should be_instance_of Hash
|
87
87
|
end
|
88
88
|
end
|
89
89
|
describe "start" do
|
90
90
|
it "should respond to start" do
|
91
|
-
@
|
91
|
+
@tournament.should respond_to(:start)
|
92
92
|
end
|
93
93
|
it "should start the tourney" do
|
94
|
+
#@tournament.start
|
95
|
+
#@tournament.load
|
96
|
+
#@tournament.status.should eq('Active')
|
94
97
|
end
|
95
98
|
end
|
96
99
|
describe "load" do
|
97
100
|
it "should respond to load" do
|
98
|
-
@
|
101
|
+
@tournament.should respond_to(:load)
|
99
102
|
end
|
100
103
|
it "should load a tourney and set attributes" do
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
+
tournament = BinaryBeast::Tournament.load(:id => @tournament.tourney_id)
|
105
|
+
tournament.load
|
106
|
+
tournament.title.should eq("Gamkoi DevTest Ruby")
|
104
107
|
end
|
105
108
|
end
|
106
109
|
describe "set status" do
|
107
110
|
it "should respond to building" do
|
108
|
-
@
|
111
|
+
@tournament.should respond_to(:setBuilding)
|
109
112
|
end
|
110
113
|
it "should respond to confirmation" do
|
111
|
-
@
|
114
|
+
@tournament.should respond_to(:setConfirmation)
|
112
115
|
end
|
113
116
|
end
|
114
117
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: binarybeast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0.pre
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -89,8 +89,10 @@ files:
|
|
89
89
|
- Rakefile
|
90
90
|
- binarybeast.gemspec
|
91
91
|
- lib/binarybeast.rb
|
92
|
+
- lib/binarybeast/constants.rb
|
93
|
+
- lib/binarybeast/service.rb
|
92
94
|
- lib/binarybeast/team.rb
|
93
|
-
- lib/binarybeast/
|
95
|
+
- lib/binarybeast/tournament.rb
|
94
96
|
- lib/binarybeast/version.rb
|
95
97
|
- spec/binarybeast_spec.rb
|
96
98
|
- spec/spec_helper.rb
|
data/lib/binarybeast/tourney.rb
DELETED
@@ -1,271 +0,0 @@
|
|
1
|
-
module Binarybeast
|
2
|
-
# Tourney
|
3
|
-
# Class
|
4
|
-
# ---------------
|
5
|
-
# This is the Tourney class. It will be used to most. It gives you a brand new Tourney object to call methods on.
|
6
|
-
# Example:
|
7
|
-
# tourney = Binarybeast::Tourney.new("Gamkoi Test")
|
8
|
-
# ---------------
|
9
|
-
# gives you a tourney object
|
10
|
-
|
11
|
-
class Tourney
|
12
|
-
include HTTParty
|
13
|
-
base_uri 'https://binarybeast.com/api'
|
14
|
-
format :json
|
15
|
-
attr_accessor :api_key, :id, :title, :publish, :game_code, :type_id, :elimination, :team_mode, :group_count, :teams_from_group, :date_start, :location, :max_teams, :replay_uploads, :replay_downloads, :description, :return_data
|
16
|
-
|
17
|
-
# Tourney Eigenclass
|
18
|
-
# Eigenclass
|
19
|
-
# ----------------
|
20
|
-
# provides some functionality in order to allow certain things before creating a tourney.
|
21
|
-
# ----------------
|
22
|
-
|
23
|
-
class << self
|
24
|
-
include HTTParty
|
25
|
-
format :json
|
26
|
-
|
27
|
-
# Load
|
28
|
-
# Method
|
29
|
-
# ----------------
|
30
|
-
# Loads a tourney from binarybeast and returns an tourney object.
|
31
|
-
# Example:
|
32
|
-
# @tourney = Binarybest::Tourney.load(:id => "xSC21212194")
|
33
|
-
# ----------------
|
34
|
-
|
35
|
-
def load(options={:force => false})
|
36
|
-
options[:id] ? id = options[:id] : id = "xSC21212194"
|
37
|
-
options[:force] ? force = options[:force] : force = false
|
38
|
-
response = self.get('https://binarybeast.com/api', :query => {:APIKey => Binarybeast.api_key, :APIService => "Tourney.TourneyLoad.Info", :TourneyID => id})
|
39
|
-
if response["Result"] == 200
|
40
|
-
return response if force
|
41
|
-
tourney = Binarybeast::Tourney.new( :id => id,
|
42
|
-
:title => response["TourneyInfo"]["Title"],
|
43
|
-
:publish => response["TourneyInfo"]["Public"],
|
44
|
-
:game_code => response["TourneyInfo"]["GameCode"],
|
45
|
-
:type_id => response["TourneyInfo"]["TypeID"],
|
46
|
-
:elimination => response["TourneyInfo"]["Elimination"],
|
47
|
-
:team_mode => response["TourneyInfo"]["TeamMode"],
|
48
|
-
:group_count => response["TourneyInfo"]["GroupCount"],
|
49
|
-
:teams_from_group => response["TourneyInfo"]["TeamsFromGroup"],
|
50
|
-
:date_start => response["TourneyInfo"]["DateStart"],
|
51
|
-
:location => response["TourneyInfo"]["Location"],
|
52
|
-
:max_teams => response["TourneyInfo"]["MaxTeams"],
|
53
|
-
:replay_uploads => response["TourneyInfo"]["ReplayUploads"],
|
54
|
-
:replay_downloads => response["TourneyInfo"]["ReplayDownloads"],
|
55
|
-
:description => response["TourneyInfo"]["Description"],
|
56
|
-
:return_data => response["TourneyInfo"]["ReturnData"],
|
57
|
-
:api_key => Binarybeast.api_key)
|
58
|
-
return tourney
|
59
|
-
else
|
60
|
-
return false
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
# List
|
65
|
-
# Method
|
66
|
-
# ----------------
|
67
|
-
# Loads the List of Tourneys you've created. Returns an hash if successful, else false
|
68
|
-
# Example:
|
69
|
-
# @tourneylist = Binarybeast::Tourney.list
|
70
|
-
# ----------------
|
71
|
-
|
72
|
-
def list(options={:order => "DateStart"})
|
73
|
-
options[:api_key] ? api_key = options[:api_key] : api_key = Binarybeast.api_key
|
74
|
-
options[:order] ? order = options[:order] : order = "DateStart"
|
75
|
-
options[:direction] ? direction = options[:direction] : direction = "DESC"
|
76
|
-
options[:verbose] ? verbose = options[:verbose] : verbose = false
|
77
|
-
response = self.get('https://binarybeast.com/api', :query => {:APIKey => api_key, :APIService => "Tourney.TourneyList.My", :Order => order, :Direction => direction, :Verbose => verbose})
|
78
|
-
response["Result"] == 200 ? response : false
|
79
|
-
end
|
80
|
-
|
81
|
-
# ListPopular
|
82
|
-
# Method
|
83
|
-
# ----------------
|
84
|
-
# Loads the List of Popular Tourneys. Retuns an hash if successful, else false
|
85
|
-
# Example:
|
86
|
-
# @tourneylist = Binarybeast::Tourney.listpopular
|
87
|
-
# ----------------
|
88
|
-
|
89
|
-
def listpopular(options={:limit => 30})
|
90
|
-
options[:limit] ? limit = options[:limit] : limit = 30
|
91
|
-
options[:api_key] ? api_key = options[:api_key] : api_key = Binarybeast.api_key
|
92
|
-
response = self.get('https://binarybeast.com/api', :query => {:APIKey => api_key, :APIService => "Tourney.TourneyList.Popular", :Limit => limit})
|
93
|
-
response["Result"] == 200 ? response : false
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
# END EIGENCLASS
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
# Constructor
|
103
|
-
# Method
|
104
|
-
# ----------------
|
105
|
-
# all tourney attributes can be given here. The title parameter is needed, all else is optional.
|
106
|
-
# Example:
|
107
|
-
# Binarybeast::Tourney.new(:title => "Gamkoi DevCup")
|
108
|
-
# ----------------
|
109
|
-
|
110
|
-
def initialize(options={:title => "Gamkoi DevTest"})
|
111
|
-
self.id = options[:id] if options[:id]
|
112
|
-
options[:title] ? self.title = options[:title] : self.title = "Test"
|
113
|
-
options[:public] ? self.publish = options[:public] : self.publish = 0
|
114
|
-
options[:game_code] ? self.game_code = options[:game_code] : self.game_code = ""
|
115
|
-
options[:type_id] ? self.type_id = options[:type_id] : self.type_id = 0
|
116
|
-
options[:elimination] ? self.elimination = options[:elimination] : self.elimination = 1
|
117
|
-
options[:team_mode] ? self.team_mode = options[:team_mode] : self.team_mode = 1
|
118
|
-
options[:group_count] ? self.group_count = options[:group_count] : self.group_count = 1
|
119
|
-
options[:teams_from_group] ? self.teams_from_group = options[:teams_from_group] : self.teams_from_group = 2
|
120
|
-
options[:date_start] ? self.date_start = options[:date_start] : self.date_start = nil
|
121
|
-
options[:location] ? self.location = options[:location] : self.location = ""
|
122
|
-
options[:max_teams] ? self.max_teams = options[:max_teams] : self.max_teams = 16
|
123
|
-
options[:replay_uploads] ? self.replay_uploads = options[:replay_uploads] : self.replay_uploads = 1
|
124
|
-
options[:replay_downloads] ? self.replay_downloads = options[:replay_downloads] : self.replay_downloads = 1
|
125
|
-
options[:description] ? self.description = options[:description] : self.description = ""
|
126
|
-
options[:return_data] ? self.return_data = options[:return_data] : self.return_data = 0
|
127
|
-
options[:api_key] ? self.api_key = options[:api_key] : self.api_key = Binarybeast.api_key
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
# Update
|
132
|
-
# Method
|
133
|
-
# ----------------
|
134
|
-
# Pushes the attributes from the object to the binarybeast api. Pushes updates from object to Binarybeast
|
135
|
-
# Example:
|
136
|
-
# @tourney = Binarybeast::Tourney.new(:title => "lol")
|
137
|
-
# @tourney.update
|
138
|
-
# ----------------
|
139
|
-
|
140
|
-
def update(options={:force => false})
|
141
|
-
response = self.class.get("", :query => {:TourneyID => self.id, :APIKey => self.api_key, :APIService => "Tourney.TourneyUpdate.Settings",
|
142
|
-
:Title => self.title, :Public => self.publish, :game_code => self.game_code,
|
143
|
-
:TypeID => self.type_id, :Elimination => self.elimination,
|
144
|
-
:TeamMode => self.team_mode, :GroupCount => self.group_count,
|
145
|
-
:TeamsFromGroup => self.teams_from_group, :DateStart => self.date_start,
|
146
|
-
:Location => self.location, :MaxTeams => self.max_teams, :ReplayUploads => self.replay_uploads,
|
147
|
-
:ReplayDownloads => self.replay_downloads, :Description => self.description, :ReturnData => self.return_data})
|
148
|
-
options[:force] ? response : response["Result"] == 200 ? true : false
|
149
|
-
end
|
150
|
-
|
151
|
-
# Create
|
152
|
-
# Method
|
153
|
-
# ----------------
|
154
|
-
# Creates the tournament object at binarybeast. You want to call this once after setting up your local Tourney object.
|
155
|
-
# Example:
|
156
|
-
# @tourney = Binarybeast::Tourny.new
|
157
|
-
# @tourney.title = "Blabla"
|
158
|
-
# @tourney.description = "Changing some attributes locally..."
|
159
|
-
# @tourney.create
|
160
|
-
# ----------------
|
161
|
-
|
162
|
-
def create(options={:force => false})
|
163
|
-
response = self.class.get("", :query => {:APIKey => self.api_key, :APIService => "Tourney.TourneyCreate.Create",
|
164
|
-
:Title => self.title, :Public => self.publish, :GameCode => self.game_code,
|
165
|
-
:TypeID => self.type_id, :Elimination => self.elimination,
|
166
|
-
:TeamMode => self.team_mode, :GroupCount => self.group_count,
|
167
|
-
:TeamsFromGroup => self.teams_from_group, :DateStart => self.date_start,
|
168
|
-
:Location => self.location, :MaxTeams => self.max_teams, :ReplayUploads => self.replay_uploads,
|
169
|
-
:ReplayDownloads => self.replay_downloads, :Description => self.description, :ReturnData => self.return_data})
|
170
|
-
self.id = response["TourneyID"] if response["Result"] == 200
|
171
|
-
options[:force] ? response : response["Result"] == 200 ? true : false
|
172
|
-
end
|
173
|
-
|
174
|
-
# Delete
|
175
|
-
# Method
|
176
|
-
# ----------------
|
177
|
-
# Deletes the tourney object from binarybeast. Does not delete the tourney object itself locally.
|
178
|
-
# Example:
|
179
|
-
# @tourney = Binarybeast::Tourney.new(:title => "Test")
|
180
|
-
# @tourney.create
|
181
|
-
# @tourney.delete
|
182
|
-
# ----------------
|
183
|
-
|
184
|
-
def delete(options={:force => false})
|
185
|
-
response = self.class.get("", :query => {:APIKey => self.api_key, :APIService => "Tourney.TourneyDelete.Delete", :TourneyID => self.id})
|
186
|
-
options[:force] ? response : response["Result"] == 200 ? true : false
|
187
|
-
end
|
188
|
-
|
189
|
-
# Start
|
190
|
-
# Method
|
191
|
-
# ----------------
|
192
|
-
# Starts the object tourney on binarybeast.
|
193
|
-
# Example:
|
194
|
-
# @tourney = Binarybeast::Tourney.new(:title => "test")
|
195
|
-
# @tourney.create
|
196
|
-
# @tourney.start
|
197
|
-
# ----------------
|
198
|
-
|
199
|
-
def start(options={:force => false})
|
200
|
-
options[:force] ? force = true : force = false
|
201
|
-
options[:seeding] ? seeding = options[:seeding] : seeding = "random"
|
202
|
-
options[:teams] ? teams = options[:teams] : teams = nil
|
203
|
-
response = self.class.get("", :query => {:APIKey => self.api_key, :APIService => "Tourney.TourneyStart.Start", :Seeding => seeding, :Teams => teams, :TourneyID => self.id})
|
204
|
-
options[:force] ? response : response["Result"] == 200 ? true : false
|
205
|
-
end
|
206
|
-
|
207
|
-
# Load
|
208
|
-
# Method
|
209
|
-
# ----------------
|
210
|
-
# Loads the information of a binarybeast tourney and saving it in the object. Pulling information - inverse of update
|
211
|
-
# Example:
|
212
|
-
# @tourney = Binarybeast::Tourney.new(:id => "xSC21212194")
|
213
|
-
# @tourney.load
|
214
|
-
# ----------------
|
215
|
-
|
216
|
-
def load(options={:force => false})
|
217
|
-
response = self.class.get("", :query => {:APIKey => self.api_key, :APIService => "Tourney.TourneyLoad.Info", :TourneyID => self.id})
|
218
|
-
return response if options[:force]
|
219
|
-
if response["Result"] == 200
|
220
|
-
self.title = response["TourneyInfo"]["Title"]
|
221
|
-
self.publish = response["TourneyInfo"]["Public"]
|
222
|
-
self.game_code = response["TourneyInfo"]["GameCode"]
|
223
|
-
self.type_id = response["TourneyInfo"]["TypeID"]
|
224
|
-
self.elimination = response["TourneyInfo"]["Elimination"]
|
225
|
-
self.team_mode = response["TourneyInfo"]["TeamMode"]
|
226
|
-
self.group_count = response["TourneyInfo"]["GroupCount"]
|
227
|
-
self.teams_from_group = response["TourneyInfo"]["TeamsFromGroup"]
|
228
|
-
self.date_start = response["TourneyInfo"]["DateStart"]
|
229
|
-
self.location = response["TourneyInfo"]["Location"]
|
230
|
-
self.max_teams = response["TourneyInfo"]["MaxTeams"]
|
231
|
-
self.replay_uploads = response["TourneyInfo"]["ReplayUploads"]
|
232
|
-
self.replay_downloads = response["TourneyInfo"]["ReplayDownloads"]
|
233
|
-
self.description = response["TourneyInfo"]["Description"]
|
234
|
-
self.return_data = response["TourneyInfo"]["ReturnData"]
|
235
|
-
return true
|
236
|
-
else
|
237
|
-
return false
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
# setBuilding
|
242
|
-
# Method
|
243
|
-
# ----------------
|
244
|
-
# Sets the status of the tourney correlating to the object to: Status: Building
|
245
|
-
# Example:
|
246
|
-
# @tourney = Binarybeast::Tourney.new
|
247
|
-
# @tourney.setBuilding
|
248
|
-
# ----------------
|
249
|
-
|
250
|
-
def setBuilding(options={:force => false})
|
251
|
-
response = self.class.get("", :query => {:APIKey => self.api_key, :APIService => "Tourney.TourneySetStatus.Building", :TourneyID => self.id})
|
252
|
-
options[:force] ? response : response["Result"] == 200 ? true : false
|
253
|
-
end
|
254
|
-
|
255
|
-
# setConfirmation
|
256
|
-
# Method
|
257
|
-
# ----------------
|
258
|
-
# Sets the status of the tourney correlating to the object to: Status: Confirmation
|
259
|
-
# Example:
|
260
|
-
# @tourney = Binarybeast::Tourney.new
|
261
|
-
# @tourney.setConfirmation
|
262
|
-
# ----------------
|
263
|
-
|
264
|
-
def setConfirmation(options={:force => false})
|
265
|
-
response = self.class.get("", :query => {:APIKey => self.api_key, :APIService => "Tourney.TourneySetStatus.Confirmation", :TourneyID => self.id})
|
266
|
-
options[:force] ? response : response["Result"] == 200 ? true : false
|
267
|
-
end
|
268
|
-
|
269
|
-
end
|
270
|
-
# END Class Tourney
|
271
|
-
end
|