footy 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cf582dedd0e62a8d95112f26cdba29ea66c56d0b
4
+ data.tar.gz: 4cef928f2751dae1e4411de61997b15b4bb4d195
5
+ SHA512:
6
+ metadata.gz: 4736bae5c900f8ffe21d4ddd96de3cd7d113458f36402c51e2afbe86259868b78f4dcd134f558a6eb4d3f84200ca3b2531b0f193ea96102909bbce5999488fb9
7
+ data.tar.gz: 3bca618ac215c8949d4a232578d452e6315b1448fe4a19de6b3ad240e5de086d5ec66332ec01d00609f42273dfcc3bd91428e69183d9082332cee6fc3bb519c9
data/lib/footy/api.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ module Footy
4
+ class Api
5
+ class << self
6
+ def call options={}
7
+ JSON.parse(Net::HTTP.get_response(URI.parse(url(options))).body)
8
+ end
9
+
10
+ private
11
+ def url options={}
12
+ options['APIKey'] = Footy.configuration.api_key
13
+ options.inject(Footy.configuration.api_url){|q, o| q += "#{o.first}=#{o.last}&"}
14
+ end
15
+ end
16
+ end
17
+ end
data/lib/footy/card.rb ADDED
@@ -0,0 +1,10 @@
1
+ module Footy
2
+ class Card
3
+ attr_accessor :name, :minute, :type
4
+ def initialize name, minute, type
5
+ @name = name
6
+ @minute = minute
7
+ @type = type
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,164 @@
1
+ module Footy
2
+ class Commentary
3
+ attr_accessor :info,
4
+ :localteam_players,
5
+ :visitorteam_players,
6
+ :commentaries,
7
+ :localteam_subs,
8
+ :visitorteam_subs,
9
+ :localteam_substitutions,
10
+ :visitorteam_substitutions,
11
+ :localteam_cards,
12
+ :visitorteam_cards,
13
+ :localteam_goals,
14
+ :visitorteam_goals
15
+
16
+ def initialize
17
+ @match_info = nil
18
+ @localteam_players = []
19
+ @visitorteam_players = []
20
+ @commentaries = []
21
+ @localteam_subs = []
22
+ @visitorteam_subs = []
23
+ @localteam_substitutions = []
24
+ @visitorteam_substitutions = []
25
+ @localteam_goals = []
26
+ @visitorteam_goals = []
27
+ @localteam_cards = []
28
+ @visitorteam_cards = []
29
+ end
30
+
31
+ def set_info data
32
+ match_info = Struct.const_defined?("MatchInfo") ? Struct::MatchInfo : Struct.new("MatchInfo", *data.keys)
33
+ @info = match_info.new *data.values
34
+ end
35
+
36
+ def set_localteam data
37
+ if !data["localteam"].nil? and !data["localteam"]["player"].nil?
38
+ data["localteam"]["player"].each do |k, v|
39
+ @localteam_players << Footy::Player.new(v["id"], v["name"], v["number"], v["pos"])
40
+ end
41
+ end
42
+ end
43
+
44
+ def set_vistorteam data
45
+ if !data["visitorteam"].nil? and !data["visitorteam"]["player"].nil?
46
+ data["visitorteam"]["player"].each do |k, v|
47
+ @visitorteam_players << Footy::Player.new(v["id"], v["name"], v["number"], v["pos"])
48
+ end
49
+ end
50
+ end
51
+
52
+ def set_localteam_subs data
53
+ if !data["localteam"].nil? and !data["localteam"]["player"].nil?
54
+ data["localteam"]["player"].each do |k, v|
55
+ @localteam_subs << Footy::Player.new(v["id"], v["name"], v["number"], v["pos"])
56
+ end
57
+ end
58
+ end
59
+
60
+ def set_vistorteam_subs data
61
+ if !data["visitorteam"].nil? and !data["visitorteam"]["player"].nil?
62
+ data["visitorteam"]["player"].each do |k, v|
63
+ @visitorteam_subs << Footy::Player.new(v["id"], v["name"], v["number"], v["pos"])
64
+ end
65
+ end
66
+ end
67
+
68
+ def set_commentaries data
69
+ data.each do |comm|
70
+ c = Struct.const_defined?("Commentary") ? Struct::Commentary : Struct.new("Commentary", :id, :isgoal, :comment, :minute)
71
+ @commentaries << c.new(comm["id"], comm["isgoal"] == "True", comm["comment"], comm["minute"])
72
+ end
73
+ end
74
+
75
+ def set_localteam_substitutions data
76
+ if !data["localteam"].nil? and !data["localteam"]["substitution"].nil?
77
+ data["localteam"]["substitution"].each do |k, v|
78
+ @localteam_substitutions << Footy::Substitution.new(v["off"], v["off_id"], v["on"], v["on_id"], v["minute"])
79
+ end
80
+ end
81
+ end
82
+
83
+ def set_visitorteam_substitutions data
84
+ if !data["visitorteam"].nil? and !data["visitorteam"]["substitution"].nil?
85
+ data["visitorteam"]["substitution"].each do |k, v|
86
+ @visitorteam_substitutions << Footy::Substitution.new(v["off"], v["off_id"], v["on"], v["on_id"], v["minute"])
87
+ end
88
+ end
89
+ end
90
+
91
+ def set_cards data
92
+ if !data.nil? and !data["localteam"].nil? and data["localteam"]["yellowcards"].count > 0
93
+ if data["localteam"]["yellowcards"]["player"]["1"].nil? #Handle the stupid JSON. This should have been an array
94
+ card = data["localteam"]["yellowcards"]["player"]
95
+ @localteam_cards << Footy::Card.new(card["name"], card["minute"], 'yellow')
96
+ else
97
+ data["localteam"]["yellowcards"]["player"].each{|k, v| @localteam_cards << Footy::Card.new(v["name"], v["minute"], 'yellow') }
98
+ end
99
+ end
100
+ if !data.nil? and !data["localteam"].nil? and data["localteam"]["redcards"].count > 0
101
+ if data["localteam"]["redcards"]["player"]["1"].nil?
102
+ card = data["localteam"]["redcards"]["player"]
103
+ @localteam_cards << Footy::Card.new(card["name"], card["minute"], 'red')
104
+ else
105
+ data["localteam"]["redcards"]["player"].each{|k, v| @localteam_cards << Footy::Card.new(v["name"], v["minute"], 'red') }
106
+ end
107
+ end
108
+
109
+ if !data.nil? and !data["visitorteam"].nil? and data["visitorteam"]["yellowcards"].count > 0
110
+ if data["visitorteam"]["yellowcards"]["player"]["1"].nil?
111
+ card = data["visitorteam"]["yellowcards"]["player"]
112
+ @visitorteam_cards << Footy::Card.new(card["name"], card["minute"], 'yellow')
113
+ else
114
+ data["visitorteam"]["yellowcards"]["player"].each{|k, v| @visitorteam_cards << Footy::Card.new(v["name"], v["minute"], 'yellow') }
115
+ end
116
+ end
117
+ if !data.nil? and !data["visitorteam"].nil? and data["visitorteam"]["redcards"].count > 0
118
+ if data["visitorteam"]["redcards"]["player"]["1"].nil?
119
+ card = data["visitorteam"]["redcards"]["player"]
120
+ @visitorteam_cards << Footy::Card.new(card["name"], card["minute"], 'red')
121
+ else
122
+ data["visitorteam"]["redcards"]["player"].each{|k, v| @visitorteam_cards << Footy::Card.new(v["name"], v["minute"], 'red') }
123
+ end
124
+ end
125
+ end
126
+
127
+ def set_goals data
128
+ if !data.nil? and !data["localteam"].nil? and data["localteam"]["goals"].count > 0
129
+ if data["localteam"]["goals"]["player"]["1"].nil?
130
+ goal = data["localteam"]["goals"]["player"]
131
+ @localteam_goals << Footy::Goal.new(goal["name"], goal["minute"], goal["owngoal"] == "True", goal["penalty"] == "True")
132
+ else
133
+ data["localteam"]["goals"]["player"].each{|k, v| @localteam_goals << Footy::Goal.new(v["name"], v["minute"], v["owngoal"] == "True", v["penalty"] == "True") }
134
+ end
135
+ end
136
+ if !data.nil? and !data["visitorteam"].nil? and data["visitorteam"]["goals"].count > 0
137
+ if data["visitorteam"]["goals"]["player"]["1"].nil?
138
+ goal = data["visitorteam"]["goals"]["player"]
139
+ @visitorteam_goals << Footy::Goal.new(goal["name"], goal["minute"], goal["owngoal"] == "True", goal["penalty"] == "True")
140
+ else
141
+ data["visitorteam"]["goals"]["player"].each{|k, v| @visitorteam_goals << Footy::Goal.new(v["name"], v["minute"], v["owngoal"] == "True", v["penalty"] == "True") }
142
+ end
143
+ end
144
+ end
145
+
146
+ class << self
147
+ def parse_from_response response
148
+ commentary = Commentary.new
149
+ commentary.set_info(response["comm_match_info"]) unless response["comm_match_info"].nil?
150
+ commentary.set_localteam(response["comm_match_teams"]) unless response["comm_match_teams"].nil?
151
+ commentary.set_vistorteam(response["comm_match_teams"]) unless response["comm_match_teams"].nil?
152
+ commentary.set_localteam_subs(response["comm_match_subs"]) unless response["comm_match_subs"].nil?
153
+ commentary.set_vistorteam_subs(response["comm_match_subs"]) unless response["comm_match_subs"].nil?
154
+ commentary.set_localteam_substitutions(response["comm_match_substitutions"]) unless response["comm_match_substitutions"].nil?
155
+ commentary.set_visitorteam_substitutions(response["comm_match_substitutions"]) unless response["comm_match_substitutions"].nil?
156
+ commentary.set_cards(response["comm_match_summary"]) unless response["comm_match_summary"].nil?
157
+ commentary.set_goals(response["comm_match_summary"]) unless response["comm_match_summary"].nil?
158
+
159
+ commentary.set_commentaries(response["comm_commentaries"]["comment"].values) if !response["comm_commentaries"].nil? and !response["comm_commentaries"]["comment"].nil?
160
+ commentary
161
+ end
162
+ end
163
+ end
164
+ end
@@ -0,0 +1,26 @@
1
+ module Footy
2
+ class Competition
3
+ attr_accessor :id, :name, :region
4
+ def initialize id, name, region
5
+ @id = id
6
+ @name = name
7
+ @region = region
8
+ end
9
+
10
+ def fixtures from, to
11
+ response = Footy::Api.call :Action => 'fixtures', :comp_id => self.id, :from_date => from.strftime("%d.%m.%Y"), :to_date => to.strftime("%d.%m.%Y")
12
+ return Footy::Fixture.from_array(response['matches']) if response["ERROR"] == "OK"
13
+ end
14
+
15
+ class << self
16
+ def all
17
+ response = Footy::Api.call :Action => 'competitions'
18
+ return from_array(response['Competition']) if response["ERROR"] == "OK"
19
+ end
20
+
21
+ def from_array competitions
22
+ competitions.collect{|c| Competition.new(c["id"], c["name"], c["region"]) }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ module Footy
2
+ # Footy.configure do |config|
3
+ # config # => instance of Footy::Configuration
4
+ # end
5
+ #
6
+ # Setting the keys with this Configuration
7
+ #
8
+ # Footy.configure do |config|
9
+ # config.api_key = '2342kjrlkwjelfkjl2342jkljfaadfadf'
10
+ # end
11
+ #
12
+ class Configuration
13
+ attr_accessor :api_key,
14
+ :api_url
15
+
16
+ def initialize #:nodoc:
17
+ @api_key = ENV['FOOTBALL_API_KEY']
18
+ @api_url = "http://football-api.com/api/?"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ module Footy
2
+ class Fixture
3
+ attr_accessor :id, :date, :time, :status, :localteam, :visitorteam
4
+ def initialize id, date, time, status, localteam_id, localteam_name, visitorteam_id, visitorteam_name
5
+ @id = id
6
+ @date = date
7
+ @time = time
8
+ @status = status
9
+ @localteam = Footy::Team.new localteam_id, localteam_name
10
+ @visitorteam = Footy::Team.new visitorteam_id, visitorteam_name
11
+ end
12
+
13
+ def commentary
14
+ response = Footy::Api.call :Action => 'commentaries', :match_id => self.id
15
+ Footy::Commentary.parse_from_response(response["commentaries"].first) if response["ERROR"] == "OK"
16
+ end
17
+
18
+ class << self
19
+ def from_array fixtures
20
+ fixtures.collect{ |f| Footy::Fixture.new f['match_id'], f['match_formatted_date'], f['match_time'], f['match_status'], f['match_localteam_id'], f['match_localteam_name'], f['match_visitorteam_id'], f['match_visitorteam_name'] }
21
+ end
22
+ end
23
+ end
24
+ end
data/lib/footy/goal.rb ADDED
@@ -0,0 +1,19 @@
1
+ module Footy
2
+ class Goal
3
+ attr_accessor :name, :minute, :owngoal, :penalty
4
+ def initialize name, minute, owngoal, penalty
5
+ @name = name
6
+ @minute = minute
7
+ @owngoal = owngoal
8
+ @penalty = penalty
9
+ end
10
+
11
+ def owngoal?
12
+ owngoal
13
+ end
14
+
15
+ def penalty?
16
+ penalty
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ module Footy
2
+ class Player
3
+ attr_accessor :id, :name, :number, :pos
4
+
5
+ def initialize id, name, number, pos
6
+ @id = id
7
+ @name = name
8
+ @number = number
9
+ @pos = pos
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module Footy
2
+ class Substitution
3
+ attr_accessor :off_name,
4
+ :off_id,
5
+ :on_name,
6
+ :on_id,
7
+ :minute
8
+
9
+ def initialize off_name, off_id, on_name, on_id, minute
10
+ @off_name = off_name
11
+ @off_id = off_id
12
+ @on_name = on_name
13
+ @on_id = on_id
14
+ @minute = minute
15
+ end
16
+ end
17
+ end
data/lib/footy/team.rb ADDED
@@ -0,0 +1,9 @@
1
+ module Footy
2
+ class Team
3
+ attr_accessor :id, :name
4
+ def initialize id, name
5
+ @id = id
6
+ @name = name
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Footy
2
+ VERSION = "0.1.0"
3
+ end
data/lib/footy.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'footy/configuration'
2
+ require 'footy/api'
3
+ require 'footy/competition'
4
+ require 'footy/team'
5
+ require 'footy/fixture'
6
+ require 'footy/commentary'
7
+ require 'footy/player'
8
+ require 'footy/substitution'
9
+ require 'footy/card'
10
+ require 'footy/goal'
11
+
12
+ module Footy
13
+ # Gives access to the current Configuration.
14
+ def self.configuration
15
+ @configuration ||= Configuration.new
16
+ end
17
+
18
+ def self.configure
19
+ config = configuration
20
+ yield(config)
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: footy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Laiq Jafri
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple plugin for accessing your football API @ football-api.com
14
+ email: laiq@tekstart.us
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/footy.rb
20
+ - lib/footy/api.rb
21
+ - lib/footy/card.rb
22
+ - lib/footy/commentary.rb
23
+ - lib/footy/competition.rb
24
+ - lib/footy/configuration.rb
25
+ - lib/footy/fixture.rb
26
+ - lib/footy/goal.rb
27
+ - lib/footy/player.rb
28
+ - lib/footy/substitution.rb
29
+ - lib/footy/team.rb
30
+ - lib/footy/version.rb
31
+ homepage: http://github.com/laiqjafri/Footy
32
+ licenses:
33
+ - MIT
34
+ metadata: {}
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubyforge_project:
51
+ rubygems_version: 2.2.2
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: Footy!
55
+ test_files: []