footty 0.0.1 → 0.2.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 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: []