mlb 0.2.6 → 0.3.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.
- data/.gitignore +3 -9
- data/.rspec +3 -0
- data/.yardopts +3 -0
- data/Gemfile +1 -3
- data/Gemfile.lock +46 -7
- data/{LICENSE → LICENSE.mkd} +1 -1
- data/README.mkd +84 -0
- data/Rakefile +26 -11
- data/autotest/discover.rb +1 -0
- data/db/mlb.sqlite3 +0 -0
- data/lib/mlb.rb +4 -2
- data/lib/mlb/request.rb +23 -0
- data/lib/mlb/team.rb +46 -57
- data/lib/mlb/version.rb +1 -1
- data/mlb.gemspec +11 -5
- data/spec/fixtures/teams.json +7162 -0
- data/spec/mlb_spec.rb +49 -0
- data/spec/spec_helper.rb +14 -0
- metadata +141 -25
- data/README.rdoc +0 -25
data/.gitignore
CHANGED
data/.rspec
ADDED
data/.yardopts
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,16 +1,55 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
mlb (0.3.0)
|
5
|
+
faraday (~> 0.5.2)
|
6
|
+
sqlite3-ruby (~> 1.3.2)
|
7
|
+
yajl-ruby (~> 0.7.8)
|
8
|
+
|
1
9
|
GEM
|
2
10
|
remote: http://rubygems.org/
|
3
11
|
specs:
|
12
|
+
ZenTest (4.4.0)
|
13
|
+
addressable (2.2.2)
|
4
14
|
crack (0.1.8)
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
15
|
+
diff-lcs (1.1.2)
|
16
|
+
faraday (0.5.2)
|
17
|
+
addressable (~> 2.2.2)
|
18
|
+
multipart-post (~> 1.0.1)
|
19
|
+
rack (>= 1.1.0, < 2)
|
20
|
+
multipart-post (1.0.1)
|
21
|
+
rack (1.2.1)
|
22
|
+
rake (0.8.7)
|
23
|
+
rcov (0.9.9)
|
24
|
+
rspec (2.0.1)
|
25
|
+
rspec-core (~> 2.0.1)
|
26
|
+
rspec-expectations (~> 2.0.1)
|
27
|
+
rspec-mocks (~> 2.0.1)
|
28
|
+
rspec-core (2.0.1)
|
29
|
+
rspec-expectations (2.0.1)
|
30
|
+
diff-lcs (>= 1.1.2)
|
31
|
+
rspec-mocks (2.0.1)
|
32
|
+
rspec-core (~> 2.0.1)
|
33
|
+
rspec-expectations (~> 2.0.1)
|
34
|
+
sqlite3-ruby (1.3.2)
|
35
|
+
webmock (1.5.0)
|
36
|
+
addressable (>= 2.2.2)
|
37
|
+
crack (>= 0.1.7)
|
38
|
+
yajl-ruby (0.7.8)
|
39
|
+
yard (0.6.1)
|
9
40
|
|
10
41
|
PLATFORMS
|
11
42
|
ruby
|
12
43
|
|
13
44
|
DEPENDENCIES
|
14
|
-
|
15
|
-
|
16
|
-
|
45
|
+
ZenTest (~> 4.4)
|
46
|
+
bundler (~> 1.0)
|
47
|
+
faraday (~> 0.5.2)
|
48
|
+
mlb!
|
49
|
+
rake (~> 0.8)
|
50
|
+
rcov (~> 0.9)
|
51
|
+
rspec (~> 2.0)
|
52
|
+
sqlite3-ruby (~> 1.3.2)
|
53
|
+
webmock (~> 1.5)
|
54
|
+
yajl-ruby (~> 0.7.8)
|
55
|
+
yard (~> 0.6)
|
data/{LICENSE → LICENSE.mkd}
RENAMED
data/README.mkd
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
MLB.rb
|
2
|
+
======
|
3
|
+
MLB.rb is a Ruby library for retrieving current Major League Baseball players, managers, teams, divisions, and leagues.
|
4
|
+
|
5
|
+
Installation
|
6
|
+
------------
|
7
|
+
$ [sudo] gem install mlb
|
8
|
+
|
9
|
+
Documentation
|
10
|
+
-------------
|
11
|
+
<http://rdoc.info/gems/mlb>
|
12
|
+
|
13
|
+
Usage Examples
|
14
|
+
-----
|
15
|
+
$ irb
|
16
|
+
>> require 'mlb'
|
17
|
+
>> MLB::Team.all.first.name # => "Arizona Diamondbacks"
|
18
|
+
>> MLB::Team.all.first.league # => "National League"
|
19
|
+
>> MLB::Team.all.first.division # => "National League West"
|
20
|
+
>> MLB::Team.all.first.manager # => "Bob Melvin"
|
21
|
+
>> MLB::Team.all.first.wins # => 82
|
22
|
+
>> MLB::Team.all.first.losses # => 80
|
23
|
+
>> MLB::Team.all.first.founded # => 1998
|
24
|
+
>> MLB::Team.all.first.mascot # => nil
|
25
|
+
>> MLB::Team.all.first.ballpark # => "Chase Field"
|
26
|
+
>> MLB::Team.all.first.logo_url # => "http://img.freebase.com/api/trans/image_thumb/wikipedia/images/en_id/13104064"
|
27
|
+
>> MLB::Team.all.first.players.first.name # => "Alex Romero"
|
28
|
+
>> MLB::Team.all.first.players.first.number # => 28
|
29
|
+
>> MLB::Team.all.first.players.first.position # => "Right fielder"
|
30
|
+
|
31
|
+
Contributing
|
32
|
+
------------
|
33
|
+
In the spirit of [free software](http://www.fsf.org/licensing/essays/free-sw.html), **everyone** is encouraged to help improve this project.
|
34
|
+
|
35
|
+
Here are some ways *you* can contribute:
|
36
|
+
|
37
|
+
* by using alpha, beta, and prerelease versions
|
38
|
+
* by reporting bugs
|
39
|
+
* by suggesting new features
|
40
|
+
* by writing or editing documentation
|
41
|
+
* by writing specifications
|
42
|
+
* by writing code (**no patch is too small**: fix typos, add comments, cleanup inconsistent whitespace)
|
43
|
+
* by refactoring code
|
44
|
+
* by closing [issues](http://github.com/sferik/mlb/issues)
|
45
|
+
* by reviewing patches
|
46
|
+
* financially
|
47
|
+
|
48
|
+
All contributors will be added to the credits and will receive the respect and gratitude of the community.
|
49
|
+
|
50
|
+
Submitting an Issue
|
51
|
+
-------------------
|
52
|
+
We use the [GitHub issue tracker](http://github.com/sferik/mlb/issues) to track bugs and
|
53
|
+
features. Before submitting a bug report or feature request, check to make sure it hasn't already
|
54
|
+
been submitted. You can indicate support for an existing issuse by voting it up. When submitting a
|
55
|
+
bug report, please include a [Gist](http://gist.github.com/) that includes a stack trace and any
|
56
|
+
details that may be necessary to reproduce the bug, including your gem version, Ruby version, and
|
57
|
+
operating system. Ideally, a bug report should include a pull request with failing specs.
|
58
|
+
|
59
|
+
Submitting a Pull Request
|
60
|
+
-------------------------
|
61
|
+
1. Fork the project.
|
62
|
+
2. Create a topic branch.
|
63
|
+
3. Implement your feature or bug fix.
|
64
|
+
4. Add documentation for your feature or bug fix.
|
65
|
+
5. Run <tt>bundle exec rake doc:yard</tt>. If your changes are not 100% documented, go back to step 4.
|
66
|
+
6. Add specs for your feature or bug fix.
|
67
|
+
7. Run <tt>bundle exec rake spec:rcov</tt>. If your changes are not 100% covered, go back to step 6.
|
68
|
+
8. Commit and push your changes.
|
69
|
+
9. Submit a pull request. Please do not include changes to the gemspec, version, or history file. (If you want to create your own version for some reason, please do so in a separate commit.)
|
70
|
+
|
71
|
+
Credits
|
72
|
+
-------
|
73
|
+
Many thanks to:
|
74
|
+
|
75
|
+
* [Bundler](http://gembundler.com/)
|
76
|
+
* [Freebase](http://www.freebase.com/)
|
77
|
+
* [faraday](https://github.com/technoweenie/faraday/)
|
78
|
+
* [Markdown](http://daringfireball.net/projects/markdown/)
|
79
|
+
* [MultiJSON](https://github.com/intridea/multi_json/)
|
80
|
+
* [rcov](https://github.com/relevance/rcov/)
|
81
|
+
* [RSpec](http://relishapp.com/rspec/)
|
82
|
+
* [SQLite](http://www.sqlite.org/)
|
83
|
+
* [WebMock](https://github.com/bblimke/webmock/)
|
84
|
+
* [YARD](http://yardoc.org/)
|
data/Rakefile
CHANGED
@@ -1,15 +1,30 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'rake/rdoctask'
|
4
1
|
require 'bundler'
|
5
|
-
|
6
2
|
Bundler::GemHelper.install_tasks
|
7
3
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
namespace :spec do
|
8
|
+
desc "Run all examples using rcov"
|
9
|
+
RSpec::Core::RakeTask.new(:rcov => :cleanup_rcov_files) do |task|
|
10
|
+
task.rcov = true
|
11
|
+
task.rcov_opts = %[-Ilib -Ispec --exclude "gems/*,features,specs" --text-report --sort coverage]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
task :cleanup_rcov_files do
|
16
|
+
rm_rf 'coverage'
|
17
|
+
end
|
18
|
+
|
19
|
+
task :default => ["spec:rcov"]
|
20
|
+
|
21
|
+
namespace :doc do
|
22
|
+
require 'yard'
|
23
|
+
YARD::Rake::YardocTask.new do |task|
|
24
|
+
task.files = ['LICENSE.mkd', 'lib/**/*.rb']
|
25
|
+
task.options = [
|
26
|
+
'--output-dir', 'doc/yard',
|
27
|
+
'--markup', 'markdown',
|
28
|
+
]
|
29
|
+
end
|
15
30
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Autotest.add_discovery { "rspec2" }
|
data/db/mlb.sqlite3
CHANGED
Binary file
|
data/lib/mlb.rb
CHANGED
data/lib/mlb/request.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module MLB
|
4
|
+
# @private
|
5
|
+
class Request
|
6
|
+
# Perform an HTTP GET request
|
7
|
+
def self.get(path, options={})
|
8
|
+
response = connection.get do |request|
|
9
|
+
request.url(path, options)
|
10
|
+
end
|
11
|
+
response.body
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def self.connection
|
17
|
+
Faraday::Connection.new(:url => 'http://api.freebase.com') do |connection|
|
18
|
+
connection.use Faraday::Response::Yajl
|
19
|
+
connection.adapter Faraday.default_adapter
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/mlb/team.rb
CHANGED
@@ -1,15 +1,10 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
|
4
1
|
module MLB
|
5
2
|
class Team
|
6
|
-
include HTTParty
|
7
|
-
format :json
|
8
|
-
base_uri 'http://www.freebase.com/api'
|
9
3
|
attr_accessor :name, :league, :division, :manager, :wins, :losses, :founded, :mascot, :ballpark, :logo_url, :players
|
10
4
|
|
11
5
|
# Returns an array of Team objects
|
12
6
|
#
|
7
|
+
# @example
|
13
8
|
# MLB::Team.all.first.name # => "Arizona Diamondbacks"
|
14
9
|
# MLB::Team.all.first.league # => "National League"
|
15
10
|
# MLB::Team.all.first.division # => "National League West"
|
@@ -35,9 +30,7 @@ module MLB
|
|
35
30
|
|
36
31
|
private
|
37
32
|
|
38
|
-
# Attempt to fetch the result from the Freebase API
|
39
|
-
# unless there is a connection error, in which case
|
40
|
-
# query a static SQLite3 database.
|
33
|
+
# Attempt to fetch the result from the Freebase API unless there is a connection error, in which case query a static SQLite3 database
|
41
34
|
def self.run
|
42
35
|
begin
|
43
36
|
run_team_mql
|
@@ -47,9 +40,7 @@ module MLB
|
|
47
40
|
end
|
48
41
|
|
49
42
|
def self.run_team_mql
|
50
|
-
|
51
|
-
results = get('/service/mqlread?', :query => {:query => query.to_json})
|
52
|
-
raise(Exception, "#{results['status']} (Transaction: #{results['transaction_id']})") unless results['code'] == '/api/status/ok'
|
43
|
+
results = Request.get('/api/service/mqlread', :query => team_mql_query)
|
53
44
|
|
54
45
|
teams = []
|
55
46
|
results['result'].each do |result|
|
@@ -128,51 +119,49 @@ module MLB
|
|
128
119
|
|
129
120
|
# Returns the MQL query for teams, as a Ruby hash
|
130
121
|
def self.team_mql_query
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
]
|
175
|
-
}
|
122
|
+
query = <<-eos
|
123
|
+
[{
|
124
|
+
"name": null,
|
125
|
+
"league": {
|
126
|
+
"name": null
|
127
|
+
},
|
128
|
+
"division": {
|
129
|
+
"name": null
|
130
|
+
},
|
131
|
+
"current_manager": {
|
132
|
+
"name": null
|
133
|
+
},
|
134
|
+
"team_stats": [{
|
135
|
+
"wins": null,
|
136
|
+
"losses": null,
|
137
|
+
"season": null,
|
138
|
+
"limit": 1,
|
139
|
+
"sort": "-season"
|
140
|
+
}],
|
141
|
+
"current_roster": [{
|
142
|
+
"player": null,
|
143
|
+
"position": null,
|
144
|
+
"number": null,
|
145
|
+
"sort": "player"
|
146
|
+
}],
|
147
|
+
"/sports/sports_team/founded": [{
|
148
|
+
"value": null
|
149
|
+
}],
|
150
|
+
"/sports/sports_team/team_mascot": [{}],
|
151
|
+
"/sports/sports_team/arena_stadium": [{
|
152
|
+
"name": null
|
153
|
+
}],
|
154
|
+
"/common/topic/image": [{
|
155
|
+
"id": null,
|
156
|
+
"timestamp": null,
|
157
|
+
"sort": "-timestamp",
|
158
|
+
"limit": 1
|
159
|
+
}],
|
160
|
+
"sort": "name",
|
161
|
+
"type": "/baseball/baseball_team"
|
162
|
+
}]
|
163
|
+
eos
|
164
|
+
'{"query":' + query.gsub!("\n", '').gsub!(' ', '') + '}'
|
176
165
|
end
|
177
166
|
|
178
167
|
def self.team_sql_query
|
data/lib/mlb/version.rb
CHANGED
data/mlb.gemspec
CHANGED
@@ -2,19 +2,25 @@
|
|
2
2
|
require File.expand_path("../lib/mlb/version", __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.
|
6
|
-
s.
|
7
|
-
s.
|
5
|
+
s.add_development_dependency("bundler", "~> 1.0")
|
6
|
+
s.add_development_dependency("rake", "~> 0.8")
|
7
|
+
s.add_development_dependency("rcov", "~> 0.9")
|
8
|
+
s.add_development_dependency("rspec", "~> 2.0")
|
9
|
+
s.add_development_dependency("webmock", "~> 1.5")
|
10
|
+
s.add_development_dependency("yard", "~> 0.6")
|
11
|
+
s.add_development_dependency("ZenTest", "~> 4.4")
|
12
|
+
s.add_runtime_dependency("faraday", "~> 0.5.2")
|
13
|
+
s.add_runtime_dependency("yajl-ruby", "~> 0.7.8")
|
14
|
+
s.add_runtime_dependency("sqlite3-ruby", "~> 1.3.2")
|
8
15
|
s.authors = ["Erik Michaels-Ober"]
|
9
16
|
s.description = %q{MLB.rb is a Ruby library for retrieving current Major League Baseball players, managers, teams, divisions, and leagues.}
|
10
17
|
s.email = ["sferik@gmail.com"]
|
11
|
-
s.extra_rdoc_files = ["LICENSE", "README.rdoc"]
|
12
18
|
s.files = `git ls-files`.split("\n")
|
13
19
|
s.homepage = "http://rubygems.org/gems/mlb"
|
14
20
|
s.name = "mlb"
|
15
21
|
s.rdoc_options = ["--charset=UTF-8"]
|
16
22
|
s.require_paths = ["lib"]
|
17
|
-
s.required_rubygems_version = ">= 1.3.6"
|
23
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.6") if s.respond_to? :required_rubygems_version=
|
18
24
|
s.summary = %q{MLB.rb is a Ruby library for retrieving current Major League Baseball players, managers, teams, divisions, and leagues.}
|
19
25
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
26
|
s.version = MLB::VERSION
|