challonge-api 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,8 @@ class Challonge
2
2
  class API < ::ActiveResource::Base
3
3
  self.user = 'your_challonge_username'
4
4
  self.password = 'your_challonge_api_key'
5
+ self.format = :json
6
+ self.include_root_in_json = true
5
7
 
6
8
  @readonly_attributes = []
7
9
 
@@ -32,7 +34,7 @@ class Challonge
32
34
  end
33
35
 
34
36
  def encode
35
- self.class.format.encode(writable_attribute_hash, {:root => self.class.element_name})
37
+ {self.class.element_name => writable_attribute_hash}.to_json
36
38
  end
37
39
 
38
40
  def readonly_attributes
@@ -10,6 +10,18 @@ class Challonge::Match < Challonge::API
10
10
  def tournament=(tournament)
11
11
  self.prefix_options[:tournament_id] = tournament.id
12
12
  end
13
+
14
+ def player1
15
+ _find_player(:player1_id)
16
+ end
17
+
18
+ def player2
19
+ _find_player(:player2_id)
20
+ end
21
+
22
+ def player_winner? (participant)
23
+ (participant.id != self.winner_id)
24
+ end
13
25
 
14
26
  # not implemented by API
15
27
  def create; end
@@ -22,4 +34,13 @@ class Challonge::Match < Challonge::API
22
34
  def readonly_attributes
23
35
  %w/prerequisite_match_ids_csv/
24
36
  end
37
+
38
+ private
39
+ def _find_player(player)
40
+ if self.attributes[player] != nil
41
+ Challonge::Participant.find(self.attributes[player], :params => {:tournament_id => self.prefix_options[:tournament_id]})
42
+ else
43
+ Challonge::Participant.new({:name => 'TBD'})
44
+ end
45
+ end
25
46
  end
@@ -3,9 +3,10 @@
3
3
  class Challonge::Participant < Challonge::API
4
4
  self.site = "https://challonge.com/api/tournaments/:tournament_id"
5
5
 
6
- def initialize(attributes = {})
6
+ def initialize(attributes = {}, persisted = false)
7
7
  @attributes = {}
8
8
  @prefix_options = {}
9
+ @persisted = persisted
9
10
 
10
11
  # allow new and create to be passed a tournament or tournament_id
11
12
  real_attributes = attributes.slice!(:tournament, :tournament_id, "tournament", "tournament_id")
@@ -26,6 +27,10 @@ class Challonge::Participant < Challonge::API
26
27
  def randomize!
27
28
  validated_post(:randomize)
28
29
  end
30
+
31
+ def name
32
+ super ? super : @attributes["challonge_username"]
33
+ end
29
34
 
30
35
  protected
31
36
 
@@ -0,0 +1,45 @@
1
+ class Challonge::Tournament < Challonge::API
2
+ self.site = "http://challonge.dev/api"
3
+
4
+ def description
5
+ if self.attributes.include?('description_source')
6
+ self.description_source
7
+ end
8
+ end
9
+
10
+ def description=(val)
11
+ self.description_source = val
12
+ end
13
+
14
+ def publish!
15
+ validated_post(:publish)
16
+ end
17
+
18
+ def start!
19
+ validated_post(:start)
20
+ end
21
+
22
+ def reset!
23
+ validated_post(:reset)
24
+ end
25
+
26
+ def participants(scope = :all)
27
+ Challonge::Participant.find(scope, :params => {:tournament_id => self.id})
28
+ end
29
+
30
+ def matches(scope = :all)
31
+ Challonge::Match.find(scope, :params => {:tournament_id => self.id})
32
+ end
33
+
34
+ protected
35
+
36
+ def readonly_attributes
37
+ %w/description_source subdomain full_challonge_url live_image_url sign_up_url/
38
+ end
39
+
40
+ def writable_attribute_hash
41
+ attr_h = super
42
+ attr_h['description'] = description
43
+ attr_h
44
+ end
45
+ end
metadata CHANGED
@@ -1,84 +1,62 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: challonge-api
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - CHALLONGE!
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-12-17 00:00:00 -05:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-11-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: activeresource
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &13785960 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :runtime
34
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *13785960
35
25
  description:
36
26
  email: bitbucket@challonge.com
37
27
  executables: []
38
-
39
28
  extensions: []
40
-
41
29
  extra_rdoc_files: []
42
-
43
- files:
30
+ files:
31
+ - lib/challonge-api.rb
44
32
  - lib/challonge/participant.rb
45
- - lib/challonge/api.rb
46
33
  - lib/challonge/match.rb
47
34
  - lib/challonge/tournament.rb
48
- - lib/challonge-api.rb
49
- has_rdoc: true
35
+ - lib/challonge/api.rb
36
+ - lib/challonge/tournament.rb.orig
50
37
  homepage: http://bitbucket.org/corneldm/challonge-api
51
38
  licenses: []
52
-
53
39
  post_install_message:
54
40
  rdoc_options: []
55
-
56
- require_paths:
41
+ require_paths:
57
42
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
43
+ required_ruby_version: !ruby/object:Gem::Requirement
59
44
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
67
- required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
76
55
  requirements: []
77
-
78
56
  rubyforge_project:
79
- rubygems_version: 1.3.7
57
+ rubygems_version: 1.8.11
80
58
  signing_key:
81
59
  specification_version: 3
82
- summary: Preconfigured ActiveResource classes for integrating with CHALLONGE!'s API - http://challonge.com/api
60
+ summary: Preconfigured ActiveResource classes for integrating with CHALLONGE!'s API
61
+ - http://challonge.com/api
83
62
  test_files: []
84
-