footty 0.0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 373892a6cffc05379b80ecf6a42fd3f4f83c559f
4
- data.tar.gz: 341c5cc9d9f87d96a6f8db55acceac719f5cb87c
3
+ metadata.gz: 4384a2834474830dc629a0549d6de29a32cb5daa
4
+ data.tar.gz: fe65f1ab2b2772e7b39fad7ac7954473ba82e48e
5
5
  SHA512:
6
- metadata.gz: 33a303c340e7101c7574e0dc7b1d1ccc8ff001e14ef38e056b605160846e195559e353938e6334bca18c97bf993bdb71f7011c2e7e4b5f8683b1fae08966d678
7
- data.tar.gz: 73510d06be889f3b8c325bc20431acc6c46c78e3528140a46560adf547b6c589ef969d2b9acb384dca45bd937ddb5341c198c99397fc2b4846b981b33fb46a60
6
+ metadata.gz: b6760c4248f92e86b911402afb4594df202f292f351548972d88e1b5e757e4625b0b14dbb639c23c044e88cccadf87ad4dddf8d5190c938bdd54ee25076c48ef
7
+ data.tar.gz: 4b87ff15d20cf9c1a56d0b65489bd403b175940ed2ba40ab5e68bddfc99cef9f4883ab56f6f6288f860694c61b5e7a661c29c9275b502527e8573c57931bd11a
data/HISTORY.md CHANGED
@@ -1,4 +1,3 @@
1
- ### 0.0.1 / 2015-09-15
2
-
3
- * Everything is new. First release
4
-
1
+ ### 1.0.0 / 2018-06-09
2
+
3
+ * Everything is new (again). First release.
data/Manifest.txt CHANGED
@@ -2,5 +2,9 @@ HISTORY.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
+ bin/footty
5
6
  lib/footty.rb
7
+ lib/footty/client.rb
6
8
  lib/footty/version.rb
9
+ test/helper.rb
10
+ test/test_client.rb
data/README.md CHANGED
@@ -1,39 +1,43 @@
1
- # footty - football.db command line
2
-
3
- Leagues, clubs, match scores and more in your terminal - no API key required;
4
- uses (offline) database.
5
-
6
-
7
- * home :: [github.com/sportdb/footty](https://github.com/sportdb/footty)
8
- * bugs :: [github.com/sportdb/footty/issues](https://github.com/sportdb/footty/issues)
9
- * gem :: [rubygems.org/gems/footty](https://rubygems.org/gems/footty)
10
- * rdoc :: [rubydoc.info/gems/footty](http://rubydoc.info/gems/footty)
11
- * forum :: [opensport](http://groups.google.com/group/opensport)
12
-
13
-
14
-
15
- ## Usage
16
-
17
- To be done
18
-
19
-
20
-
21
- ## Install
22
-
23
- Just install the gem:
24
-
25
- $ gem install footty
26
-
27
-
28
- ## License
29
-
30
- The `footty` scripts are dedicated to the public domain.
31
- Use it as you please with no restrictions whatsoever.
32
-
33
-
34
- ## Questions? Comments?
35
-
36
- Send them along to the
37
- [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
38
- Thanks!
39
-
1
+ # footty - sport.db (incl. football.db) command line client for world cup (russia 2018) and more
2
+
3
+ * home :: [github.com/sportdb/footty](https://github.com/sportdb/footty)
4
+ * bugs :: [github.com/sportdb/footty/issues](https://github.com/sportdb/footty/issues)
5
+ * gem :: [rubygems.org/gems/footty](https://rubygems.org/gems/footty)
6
+ * rdoc :: [rubydoc.info/gems/footty](http://rubydoc.info/gems/footty)
7
+ * forum :: [opensport](http://groups.google.com/group/opensport)
8
+
9
+
10
+
11
+
12
+ ## Usage - Who's playing today?
13
+
14
+ The footty gem lets you query online sport.db (incl. football.db) HTTP JSON API services
15
+ for upcoming matches. For example,
16
+
17
+ $ footty # Defaults to today's world cup 2018 matches
18
+
19
+ prints on Jun/14 2018:
20
+
21
+ Russia (RUS) vs Saudi Arabia (KSA) @ Luzhniki Stadium, Moscow
22
+
23
+ That's it.
24
+
25
+
26
+ ## Install
27
+
28
+ Just install the gem:
29
+
30
+ $ gem install footty
31
+
32
+
33
+ ## License
34
+
35
+ The `footty` scripts are dedicated to the public domain.
36
+ Use it as you please with no restrictions whatsoever.
37
+
38
+
39
+ ## Questions? Comments?
40
+
41
+ Send them along to the
42
+ [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
43
+ Thanks!
data/Rakefile CHANGED
@@ -1,29 +1,30 @@
1
- require 'hoe'
2
- require './lib/footty/version.rb'
3
-
4
- Hoe.spec 'footty' do
5
-
6
- self.version = Footty::VERSION
7
-
8
- self.summary = "footty - football.db command line - leagues, match scores and more in your terminal - no API key required; uses (offline) database"
9
- self.description = summary
10
-
11
- self.urls = ['https://github.com/sportdb/footty']
12
-
13
- self.author = 'Gerald Bauer'
14
- self.email = 'opensport@googlegroups.com'
15
-
16
- # switch extension to .markdown for gihub formatting
17
- self.readme_file = 'README.md'
18
- self.history_file = 'HISTORY.md'
19
-
20
- self.extra_deps = [
21
- ]
22
-
23
- self.licenses = ['Public Domain']
24
-
25
- self.spec_extras = {
26
- required_ruby_version: '>= 1.9.2'
27
- }
28
-
29
- end
1
+ require 'hoe'
2
+ require './lib/footty/version.rb'
3
+
4
+ Hoe.spec 'footty' do
5
+
6
+ self.version = Footty::VERSION
7
+
8
+ self.summary = 'footty - sport.db (incl. football.db) command line client for world cup (russia 2018) and more - who is playing today?'
9
+ self.description = summary
10
+
11
+ self.urls = ['https://github.com/sportdb/footty']
12
+
13
+ self.author = 'Gerald Bauer'
14
+ self.email = 'opensport@googlegroups.com'
15
+
16
+ # switch extension to .markdown for gihub formatting
17
+ self.readme_file = 'README.md'
18
+ self.history_file = 'HISTORY.md'
19
+
20
+ self.extra_deps = [
21
+ ['logutils' ],
22
+ ['fetcher']
23
+ ]
24
+
25
+ self.licenses = ['Public Domain']
26
+
27
+ self.spec_extras = {
28
+ :required_ruby_version => '>= 2.3'
29
+ }
30
+ end
data/bin/footty ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'footty'
4
+
5
+ Footty.main
@@ -0,0 +1,74 @@
1
+ # encoding: utf-8
2
+
3
+ module Footty
4
+
5
+ class Client
6
+
7
+ include LogUtils::Logging
8
+
9
+ API_BASE = 'http://footballdb.herokuapp.com/api/v1'
10
+
11
+ def initialize( opts={} )
12
+ @opts = opts
13
+ @worker = Fetcher::Worker.new
14
+ end
15
+
16
+
17
+ def get_todays_round
18
+ event_key = 'world.2014'
19
+ get( "event/#{event_key}/round/today" )
20
+ end
21
+
22
+ ## for testing lets you use /round/1 etc.
23
+ def get_round( num )
24
+ event_key = 'world.2014'
25
+ get( "event/#{event_key}/round/#{num}" )
26
+ end
27
+
28
+ ### todo/fix:
29
+ ## add a new services for todays games only (not todays round w/ all games)
30
+ def get_todays_games
31
+ round_hash = get_todays_round()
32
+ games = select_todays_games( round_hash[ 'games' ] )
33
+ games
34
+ end
35
+
36
+ private
37
+ def select_todays_games( all_games )
38
+ games = []
39
+ all_games.each do |game|
40
+ play_at = Date.parse( game['play_at'] )
41
+ if play_at == Date.today
42
+ games << game
43
+ else
44
+ ## puts " skipping game play_at #{play_at}"
45
+ end
46
+ end
47
+ games
48
+ end
49
+
50
+ def get( path )
51
+ ## uri = URI.parse( "#{API_BASE}/#{path}" )
52
+ # fix: use is_a? URI in fetcher
53
+ uri_string = "#{API_BASE}/#{path}"
54
+
55
+ response = @worker.get_response( uri_string )
56
+
57
+ if response.code == '200'
58
+ ##
59
+ ## todo/check:
60
+ ## do we need to force utf-8 encoding?
61
+ ## check for teams w/ non-ascii names
62
+ hash = JSON.parse( response.body )
63
+ ## pp hash
64
+ hash
65
+ else
66
+ logger.error "fetch HTTP - #{response.code} #{response.message}"
67
+ nil
68
+ end
69
+ end
70
+
71
+ end # class Client
72
+
73
+
74
+ end # module Footty
@@ -1,24 +1,4 @@
1
- # encoding: utf-8
2
-
3
1
 
4
2
  module Footty
5
-
6
- MAJOR = 0
7
- MINOR = 0
8
- PATCH = 1
9
- VERSION = [MAJOR,MINOR,PATCH].join('.')
10
-
11
- def self.version
12
- VERSION
13
- end
14
-
15
- def self.banner
16
- "footty/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
17
- end
18
-
19
- def self.root
20
- "#{File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )}"
21
- end
22
-
23
- end # module Footty
24
-
3
+ VERSION = '0.2.0'
4
+ end
data/lib/footty.rb CHANGED
@@ -1,11 +1,55 @@
1
1
  # encoding: utf-8
2
2
 
3
3
 
4
- ## our own code
5
- require 'footty/version' # note: let version always go first
4
+ ## stdlibs
6
5
 
6
+ require 'net/http'
7
+ require 'uri'
8
+ require 'json'
9
+ require 'pp'
7
10
 
8
11
 
12
+ ## 3rd party gems/libs
13
+ ## require 'props'
9
14
 
10
- ## say hello
11
- puts Footty.banner if defined?($RUBYLIBS_DEBUG) && $RUBYLIBS_DEBUG
15
+ require 'logutils'
16
+ require 'fetcher'
17
+
18
+ # our own code
19
+
20
+ require 'footty/version' # let it always go first
21
+ require 'footty/client'
22
+
23
+
24
+ module Footty
25
+
26
+ def self.banner
27
+ "footty/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
28
+ end
29
+
30
+ def self.root
31
+ "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
32
+ end
33
+
34
+ def self.main
35
+ puts banner # say hello
36
+
37
+ client = Client.new
38
+ games = client.get_todays_games()
39
+ ## pp games
40
+
41
+ ## print games
42
+ games.each do |game|
43
+ print " "
44
+ print "#{game['team1_title']} (#{game['team1_code']})"
45
+ print " vs "
46
+ print "#{game['team2_title']} (#{game['team2_code']})"
47
+ print "\n"
48
+ end
49
+ end
50
+
51
+ end # module Footty
52
+
53
+
54
+
55
+ Footty.main if __FILE__ == $0
data/test/helper.rb ADDED
@@ -0,0 +1,12 @@
1
+ ## $:.unshift(File.dirname(__FILE__))
2
+
3
+ ## minitest setup
4
+
5
+ # require 'minitest/unit'
6
+ require 'minitest/autorun'
7
+
8
+ # include MiniTest::Unit # lets us use TestCase instead of MiniTest::Unit::TestCase
9
+
10
+ ## our own code
11
+
12
+ require 'footty'
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ require 'helper'
5
+
6
+ class TestClient < MiniTest::Unit::TestCase
7
+
8
+ def test_todays_games
9
+ client = Footty::Client.new
10
+ ary = client.get_todays_games()
11
+ ## note: returns empty array if no games scheduled/playing today
12
+ pp ary
13
+
14
+ assert_equal Array, ary.class ## for now just check return type (e.g. assume Array for parsed JSON data)
15
+ end
16
+
17
+ def test_world_2014_round_1
18
+ client = Footty::Client.new
19
+ h = client.get_round( 1 )
20
+
21
+ ## pp h
22
+ =begin
23
+ {"event"=>{"key"=>"world.2014", "title"=>"World Cup 2014"},
24
+ "round"=>
25
+ {"pos"=>1,
26
+ "title"=>"Matchday 1",
27
+ "start_at"=>"2014/06/12",
28
+ "end_at"=>"2014/06/12"},
29
+ "games"=>
30
+ [{"team1_key"=>"bra",
31
+ "team1_title"=>"Brazil",
32
+ "team1_code"=>"BRA",
33
+ "team2_key"=>"cro",
34
+ "team2_title"=>"Croatia",
35
+ "team2_code"=>"CRO",
36
+ "play_at"=>"2014/06/12",
37
+ "score1"=>3,
38
+ "score2"=>1,
39
+ "score1ot"=>nil,
40
+ "score2ot"=>nil,
41
+ "score1p"=>nil,
42
+ "score2p"=>nil}]}
43
+ =end
44
+
45
+ assert_equal 'bra', h['games'][0]['team1_key']
46
+ assert_equal 'cro', h['games'][0]['team2_key']
47
+ assert_equal 3, h['games'][0]['score1']
48
+ assert_equal 1, h['games'][0]['score2']
49
+ end
50
+
51
+ end # class TestClient
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: footty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2018-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logutils
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fetcher
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: rdoc
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -30,18 +58,19 @@ dependencies:
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: '3.13'
61
+ version: '3.16'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '3.13'
41
- description: footty - football.db command line - leagues, match scores and more in
42
- your terminal - no API key required; uses (offline) database
68
+ version: '3.16'
69
+ description: footty - sport.db (incl. football.db) command line client for world cup
70
+ (russia 2018) and more - who is playing today?
43
71
  email: opensport@googlegroups.com
44
- executables: []
72
+ executables:
73
+ - footty
45
74
  extensions: []
46
75
  extra_rdoc_files:
47
76
  - HISTORY.md
@@ -52,8 +81,12 @@ files:
52
81
  - Manifest.txt
53
82
  - README.md
54
83
  - Rakefile
84
+ - bin/footty
55
85
  - lib/footty.rb
86
+ - lib/footty/client.rb
56
87
  - lib/footty/version.rb
88
+ - test/helper.rb
89
+ - test/test_client.rb
57
90
  homepage: https://github.com/sportdb/footty
58
91
  licenses:
59
92
  - Public Domain
@@ -68,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
68
101
  requirements:
69
102
  - - ">="
70
103
  - !ruby/object:Gem::Version
71
- version: 1.9.2
104
+ version: '2.3'
72
105
  required_rubygems_version: !ruby/object:Gem::Requirement
73
106
  requirements:
74
107
  - - ">="
@@ -76,9 +109,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
109
  version: '0'
77
110
  requirements: []
78
111
  rubyforge_project:
79
- rubygems_version: 2.2.3
112
+ rubygems_version: 2.5.2
80
113
  signing_key:
81
114
  specification_version: 4
82
- summary: footty - football.db command line - leagues, match scores and more in your
83
- terminal - no API key required; uses (offline) database
115
+ summary: footty - sport.db (incl. football.db) command line client for world cup (russia
116
+ 2018) and more - who is playing today?
84
117
  test_files: []