mlb 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CONTRIBUTING.md +2 -2
- data/README.md +6 -1
- data/Rakefile +31 -5
- data/lib/mlb/player.rb +8 -10
- data/lib/mlb/request.rb +9 -9
- data/lib/mlb/team.rb +28 -31
- data/lib/mlb/version.rb +13 -1
- data/mlb.gemspec +8 -7
- data/spec/helper.rb +14 -6
- data/spec/mlb_spec.rb +95 -34
- metadata +57 -58
- metadata.gz.sig +0 -0
- data/lib/mlb/response/parse_json.rb +0 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e86303e2aa1810d5213ac3b1994bad065045a89f
|
4
|
+
data.tar.gz: 0e8c5d53d3912fcbc27a9eac8b53e6bb8cd5cc68
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 22d39a995a4edde5e03c3a4b294aaab99b94e5aa06db7cd0906f3ec5ea2a40435bf02be75337b2a1b23435590e7ccbe4705814765524f489fd7e9404332c313e
|
7
|
+
data.tar.gz: a89f2d8eb70401b875534421efd4b21ec92f32641528cc94a90b91e7169b24b05fd0f1515b584f306548fd6b32aaf06d0775766d1e0d907bde50474bb9f1ca58
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CONTRIBUTING.md
CHANGED
@@ -39,8 +39,8 @@ Ideally, a bug report should include a pull request with failing specs.
|
|
39
39
|
7. Run `open coverage/index.html`. If your changes are not completely covered
|
40
40
|
by your tests, return to step 3.
|
41
41
|
8. Add documentation for your feature or bug fix.
|
42
|
-
9. Run `bundle exec rake
|
43
|
-
back to step 8.
|
42
|
+
9. Run `bundle exec rake verify_measurements`. If your changes are not 100%
|
43
|
+
documented, go back to step 8.
|
44
44
|
10. Add, commit, and push your changes.
|
45
45
|
11. [Submit a pull request.][pr]
|
46
46
|
|
data/README.md
CHANGED
@@ -2,10 +2,14 @@
|
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/mlb.png)][gem]
|
3
3
|
[![Build Status](https://secure.travis-ci.org/sferik/mlb.png?branch=master)][travis]
|
4
4
|
[![Dependency Status](https://gemnasium.com/sferik/mlb.png?travis)][gemnasium]
|
5
|
+
[![Code Climate](https://codeclimate.com/github/sferik/mlb.png)][codeclimate]
|
6
|
+
[![Coverage Status](https://coveralls.io/repos/sferik/mlb/badge.png?branch=master)][coveralls]
|
5
7
|
|
6
8
|
[gem]: https://rubygems.org/gems/mlb
|
7
9
|
[travis]: http://travis-ci.org/sferik/mlb
|
8
10
|
[gemnasium]: https://gemnasium.com/sferik/mlb
|
11
|
+
[codeclimate]: https://codeclimate.com/github/sferik/mlb
|
12
|
+
[coveralls]: https://coveralls.io/r/sferik/mlb
|
9
13
|
|
10
14
|
MLB.rb is a Ruby library for retrieving current Major League Baseball players, managers, teams, divisions, and leagues.
|
11
15
|
|
@@ -16,7 +20,7 @@ To ensure the code you're installing hasn't been tampered with, it's
|
|
16
20
|
recommended that you verify the signature. To do this, you need to add my
|
17
21
|
public key as a trusted certificate (you only need to do this once):
|
18
22
|
|
19
|
-
gem cert --add <(curl -Ls https://
|
23
|
+
gem cert --add <(curl -Ls https://raw.github.com/sferik/mlb/master/certs/sferik.pem)
|
20
24
|
|
21
25
|
Then, install the gem with the high security trust policy:
|
22
26
|
|
@@ -52,6 +56,7 @@ implementations:
|
|
52
56
|
* Ruby 1.9.2
|
53
57
|
* Ruby 1.9.3
|
54
58
|
* Ruby 2.0.0
|
59
|
+
* Ruby 2.1.0
|
55
60
|
* [Rubinius][]
|
56
61
|
* [JRuby][]
|
57
62
|
|
data/Rakefile
CHANGED
@@ -5,18 +5,44 @@ require 'rspec/core/rake_task'
|
|
5
5
|
RSpec::Core::RakeTask.new(:spec)
|
6
6
|
|
7
7
|
task :test => :spec
|
8
|
-
task :default => :spec
|
9
8
|
|
10
9
|
namespace :cache do
|
11
10
|
require 'mlb'
|
12
|
-
desc
|
11
|
+
desc 'Update the teams file cache'
|
13
12
|
task :update do
|
14
|
-
|
15
|
-
File.
|
16
|
-
|
13
|
+
json = MLB::Team.results_from_freebase
|
14
|
+
file = File.new('cache/teams.json', 'w+')
|
15
|
+
tempfile = Tempfile.new('teams.json')
|
16
|
+
tempfile.write(JSON.dump(json))
|
17
|
+
if system("python -mjson.tool #{tempfile.path} #{file.path}")
|
18
|
+
puts "File sucessfully written to #{file.path}"
|
19
|
+
tempfile.delete
|
20
|
+
else
|
21
|
+
abort "Error parsing #{tempfile.path}"
|
17
22
|
end
|
18
23
|
end
|
19
24
|
end
|
20
25
|
|
26
|
+
begin
|
27
|
+
require 'rubocop/rake_task'
|
28
|
+
Rubocop::RakeTask.new
|
29
|
+
rescue LoadError
|
30
|
+
task :rubocop do
|
31
|
+
$stderr.puts 'Rubocop is disabled'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
21
35
|
require 'yard'
|
22
36
|
YARD::Rake::YardocTask.new
|
37
|
+
|
38
|
+
require 'yardstick/rake/measurement'
|
39
|
+
Yardstick::Rake::Measurement.new do |measurement|
|
40
|
+
measurement.output = 'measurement/report.txt'
|
41
|
+
end
|
42
|
+
|
43
|
+
require 'yardstick/rake/verify'
|
44
|
+
Yardstick::Rake::Verify.new do |verify|
|
45
|
+
verify.threshold = 56.2
|
46
|
+
end
|
47
|
+
|
48
|
+
task :default => [:spec, :rubocop, :verify_measurements]
|
data/lib/mlb/player.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
module MLB
|
2
2
|
class Player
|
3
|
-
|
4
|
-
attr_reader :name, :number, :position
|
3
|
+
attr_reader :name, :number, :positions, :from, :to
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
def initialize(attributes={})
|
5
|
+
def initialize(attributes = {})
|
9
6
|
attributes.each do |key, value|
|
10
7
|
instance_variable_set("@#{key}", value) if self.respond_to?(key)
|
11
8
|
end
|
@@ -13,14 +10,15 @@ module MLB
|
|
13
10
|
|
14
11
|
# Returns an array of Player objects given a team roster
|
15
12
|
def self.all_from_roster(players)
|
16
|
-
players.map do |player|
|
13
|
+
players.select { |player| player['to'].nil? }.map do |player|
|
17
14
|
new(
|
18
|
-
:name
|
19
|
-
:number
|
20
|
-
:
|
15
|
+
:name => player['player'],
|
16
|
+
:number => player['number'].to_i,
|
17
|
+
:positions => player['position'],
|
18
|
+
:from => player['from'].to_i,
|
19
|
+
:to => 'Present'
|
21
20
|
)
|
22
21
|
end
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
24
|
end
|
data/lib/mlb/request.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'faraday'
|
2
|
-
require '
|
2
|
+
require 'faraday_middleware'
|
3
3
|
|
4
4
|
module MLB
|
5
5
|
# @private
|
6
6
|
class Request
|
7
7
|
# Perform an HTTP GET request
|
8
|
-
def self.get(path, options={}
|
9
|
-
|
8
|
+
def self.get(path, options = {})
|
9
|
+
connection.get do |request|
|
10
10
|
request.url(path, options)
|
11
|
-
end
|
12
|
-
raw ? response : response.body
|
11
|
+
end.body
|
13
12
|
end
|
14
13
|
|
15
|
-
|
14
|
+
private
|
16
15
|
|
17
|
-
def self.connection
|
18
|
-
Faraday.new(:url => '
|
19
|
-
builder.
|
16
|
+
def self.connection
|
17
|
+
Faraday.new(:url => 'https://www.googleapis.com', :ssl => {:verify => false}) do |builder|
|
18
|
+
builder.request :url_encoded
|
19
|
+
builder.use FaradayMiddleware::ParseJson
|
20
20
|
builder.adapter Faraday.default_adapter
|
21
21
|
end
|
22
22
|
end
|
data/lib/mlb/team.rb
CHANGED
@@ -3,7 +3,6 @@ require 'multi_json'
|
|
3
3
|
|
4
4
|
module MLB
|
5
5
|
class Team
|
6
|
-
private_class_method :new
|
7
6
|
attr_reader :name, :league, :division, :manager, :wins, :losses, :founded, :mascot, :ballpark, :logo_url, :players
|
8
7
|
|
9
8
|
# Returns an array of Team objects
|
@@ -36,30 +35,28 @@ module MLB
|
|
36
35
|
@all = nil
|
37
36
|
end
|
38
37
|
|
39
|
-
|
38
|
+
private
|
40
39
|
|
41
|
-
def initialize(attributes={})
|
40
|
+
def initialize(attributes = {})
|
42
41
|
attributes.each do |key, value|
|
43
42
|
instance_variable_set("@#{key}", value) if self.respond_to?(key)
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
47
|
-
def self.results_from_freebase
|
48
|
-
|
49
|
-
Request.get('/api/service/mqlread', options, raw)
|
46
|
+
def self.results_from_freebase
|
47
|
+
Request.get('/freebase/v1/mqlread', :query => mql_query)
|
50
48
|
end
|
51
49
|
|
52
50
|
def self.results_from_cache
|
53
|
-
|
51
|
+
JSON.load(file_from_cache('teams.json').read)
|
54
52
|
end
|
55
53
|
|
56
54
|
def self.file_from_cache(file_name)
|
57
|
-
File.new(File.expand_path(
|
55
|
+
File.new(File.expand_path('../../../cache', __FILE__) + '/' + file_name)
|
58
56
|
end
|
59
57
|
|
60
|
-
def self.results_to_team(results)
|
61
|
-
|
62
|
-
results['result'].each do |result|
|
58
|
+
def self.results_to_team(results) # rubocop:disable CyclomaticComplexity, MethodLength
|
59
|
+
results['result'].map do |result|
|
63
60
|
league = result['league']
|
64
61
|
division = result['division']
|
65
62
|
manager = result['current_manager']
|
@@ -69,27 +66,24 @@ module MLB
|
|
69
66
|
ballpark = result['/sports/sports_team/arena_stadium'].first
|
70
67
|
logo_prefix = 'http://img.freebase.com/api/trans/image_thumb'
|
71
68
|
logo_suffix = result['/common/topic/image'].first
|
72
|
-
players = result['
|
69
|
+
players = result['/sports/sports_team/roster']
|
73
70
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
:players => (players ? Player.all_from_roster(players) : [])
|
86
|
-
)
|
71
|
+
new(:name => result['name'],
|
72
|
+
:league => (league ? league['name'] : nil),
|
73
|
+
:division => (division ? division['name'] : nil),
|
74
|
+
:manager => (manager ? manager['name'] : nil),
|
75
|
+
:wins => (stats ? stats['wins'].to_i : nil),
|
76
|
+
:losses => (stats ? stats['losses'].to_i : nil),
|
77
|
+
:founded => (founded ? founded['value'].to_i : nil),
|
78
|
+
:mascot => (mascot ? mascot['name'] : nil),
|
79
|
+
:ballpark => (ballpark ? ballpark['name'] : nil),
|
80
|
+
:logo_url => (logo_suffix ? logo_prefix + logo_suffix['id'] : nil),
|
81
|
+
:players => (players ? Player.all_from_roster(players) : []))
|
87
82
|
end
|
88
|
-
teams
|
89
83
|
end
|
90
84
|
|
91
85
|
# Returns the MQL query for teams, as a Ruby hash
|
92
|
-
def self.mql_query
|
86
|
+
def self.mql_query # rubocop:disable MethodLength
|
93
87
|
query = <<-eos
|
94
88
|
[{
|
95
89
|
"name": null,
|
@@ -100,6 +94,7 @@ module MLB
|
|
100
94
|
"name": null
|
101
95
|
},
|
102
96
|
"current_manager": {
|
97
|
+
"optional": true,
|
103
98
|
"name": null
|
104
99
|
},
|
105
100
|
"team_stats": [{
|
@@ -109,10 +104,12 @@ module MLB
|
|
109
104
|
"limit": 1,
|
110
105
|
"sort": "-season"
|
111
106
|
}],
|
112
|
-
"
|
107
|
+
"/sports/sports_team/roster": [{
|
113
108
|
"player": null,
|
114
|
-
"position": null,
|
115
109
|
"number": null,
|
110
|
+
"from": null,
|
111
|
+
"to": null,
|
112
|
+
"position": [],
|
116
113
|
"sort": "player"
|
117
114
|
}],
|
118
115
|
"/sports/sports_team/founded": [{
|
@@ -123,6 +120,7 @@ module MLB
|
|
123
120
|
"name": null
|
124
121
|
}],
|
125
122
|
"/common/topic/image": [{
|
123
|
+
"optional": true,
|
126
124
|
"id": null,
|
127
125
|
"timestamp": null,
|
128
126
|
"sort": "-timestamp",
|
@@ -132,8 +130,7 @@ module MLB
|
|
132
130
|
"type": "/baseball/baseball_team"
|
133
131
|
}]
|
134
132
|
eos
|
135
|
-
|
133
|
+
query.gsub!("\n", '').gsub!(' ', '')
|
136
134
|
end
|
137
|
-
|
138
135
|
end
|
139
136
|
end
|
data/lib/mlb/version.rb
CHANGED
@@ -1,3 +1,15 @@
|
|
1
1
|
module MLB
|
2
|
-
|
2
|
+
class Version
|
3
|
+
MAJOR = 0
|
4
|
+
MINOR = 7
|
5
|
+
PATCH = 0
|
6
|
+
PRE = nil
|
7
|
+
|
8
|
+
class << self
|
9
|
+
# @return [String]
|
10
|
+
def to_s
|
11
|
+
[MAJOR, MINOR, PATCH, PRE].compact.join('.')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
3
15
|
end
|
data/mlb.gemspec
CHANGED
@@ -5,22 +5,23 @@ require 'mlb/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.add_dependency 'faraday', ['~> 0.8', '< 0.10']
|
8
|
-
spec.add_dependency '
|
8
|
+
spec.add_dependency 'faraday_middleware', '~> 0.9'
|
9
|
+
spec.add_dependency 'json', '~> 1.8'
|
9
10
|
spec.add_development_dependency 'bundler', '~> 1.0'
|
10
|
-
spec.author =
|
11
|
+
spec.author = 'Erik Michaels-Ober'
|
11
12
|
spec.cert_chain = ['certs/sferik.pem']
|
12
13
|
spec.description = %q{MLB.rb is a Ruby library for retrieving current Major League Baseball players, managers, teams, divisions, and leagues.}
|
13
14
|
spec.email = 'sferik@gmail.com'
|
14
15
|
spec.files = %w(.yardopts CONTRIBUTING.md LICENSE.md README.md Rakefile mlb.gemspec)
|
15
|
-
spec.files += Dir.glob(
|
16
|
-
spec.files += Dir.glob(
|
16
|
+
spec.files += Dir.glob('lib/**/*.rb')
|
17
|
+
spec.files += Dir.glob('spec/**/*')
|
17
18
|
spec.homepage = 'https://github.com/sferik/mlb'
|
18
19
|
spec.licenses = ['MIT']
|
19
20
|
spec.name = 'mlb'
|
20
21
|
spec.require_paths = ['lib']
|
21
|
-
spec.required_rubygems_version = '>= 1.3.
|
22
|
-
spec.signing_key = File.expand_path(
|
22
|
+
spec.required_rubygems_version = '>= 1.3.5'
|
23
|
+
spec.signing_key = File.expand_path('~/.gem/private_key.pem') if $PROGRAM_NAME =~ /gem\z/
|
23
24
|
spec.summary = spec.description
|
24
25
|
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
-
spec.version = MLB::
|
26
|
+
spec.version = MLB::Version
|
26
27
|
end
|
data/spec/helper.rb
CHANGED
@@ -1,14 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
|
9
|
+
SimpleCov.start do
|
10
|
+
add_filter '/spec/'
|
11
|
+
minimum_coverage(100)
|
6
12
|
end
|
7
13
|
|
8
14
|
require 'mlb'
|
9
15
|
require 'rspec'
|
10
16
|
require 'webmock/rspec'
|
11
17
|
|
18
|
+
WebMock.disable_net_connect!(:allow => 'coveralls.io')
|
19
|
+
|
12
20
|
RSpec.configure do |config|
|
13
21
|
config.expect_with :rspec do |c|
|
14
22
|
c.syntax = :expect
|
@@ -16,7 +24,7 @@ RSpec.configure do |config|
|
|
16
24
|
end
|
17
25
|
|
18
26
|
def fixture_path
|
19
|
-
File.expand_path(
|
27
|
+
File.expand_path('../../cache', __FILE__)
|
20
28
|
end
|
21
29
|
|
22
30
|
def fixture(file)
|
data/spec/mlb_spec.rb
CHANGED
@@ -1,53 +1,114 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
describe MLB::Team,
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
describe MLB::Team, '.all' do
|
4
|
+
before do
|
5
|
+
stub_request(:get, 'https://www.googleapis.com/freebase/v1/mqlread').with(:query => {:query => described_class.mql_query}).to_return(:body => fixture('teams.json'))
|
6
|
+
end
|
7
|
+
after do
|
8
|
+
described_class.reset
|
9
|
+
end
|
10
|
+
subject do
|
11
|
+
described_class.all
|
12
|
+
end
|
13
|
+
it 'there are thirty teams' do
|
14
|
+
expect(subject.size).to eq 30
|
15
|
+
end
|
16
|
+
it 'teams are sorted alphabetically, by name' do
|
17
|
+
# Arizona Diamondbacks..Washington Nationals
|
18
|
+
expect(subject).to eq subject.sort_by(&:name)
|
19
|
+
end
|
20
|
+
it 'every team belongs to a league' do
|
21
|
+
subject.each do |team|
|
22
|
+
expect(team.league).to match /^(American|National|Major) League( Baseball)?$/
|
7
23
|
end
|
8
|
-
|
9
|
-
|
10
|
-
|
24
|
+
end
|
25
|
+
it 'every team belongs to a division' do
|
26
|
+
subject.each do |team|
|
27
|
+
expect(team.division).to match /^(American|National) League (East|Central|West)$/
|
11
28
|
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
expect(
|
29
|
+
end
|
30
|
+
it 'every team has win and loss statistics' do
|
31
|
+
subject.each do |team|
|
32
|
+
expect(team.wins).to be_between(0, 162), "got: #{team.wins} for #{team.name}"
|
33
|
+
expect(team.losses).to be_between(0, 162), "got: #{team.losses} for #{team.name}"
|
34
|
+
games = team.wins + team.losses
|
35
|
+
# Allow up to 163 total games, since there may be a tie-breaking game
|
36
|
+
expect(games).to be <= 163, "got: #{games} for #{team.name}"
|
16
37
|
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
38
|
+
end
|
39
|
+
it 'every team has a founding year' do
|
40
|
+
subject.each do |team|
|
41
|
+
# Chicago Cubs..Washington Nationals
|
42
|
+
expect(team.founded).to be_between(1870, 2005), "got: #{team.founded} for #{team.name}"
|
21
43
|
end
|
22
44
|
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
stub_request(:get, 'http://api.freebase.com/api/service/mqlread').with(:query => {:query => MLB::Team.mql_query}).to_timeout
|
45
|
+
it 'every team has a ballpark' do
|
46
|
+
subject.each do |team|
|
47
|
+
expect(team.ballpark).to match /(Ballpark|Centre|Coliseum|Field|Park|Stadium)( (at|in|of) .+)?$/
|
27
48
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
49
|
+
end
|
50
|
+
it 'every team has a 25-player roster' do
|
51
|
+
subject.each do |team|
|
52
|
+
expect(team.players.size).to be >= 25, "got: #{team.players.size} for #{team.name}"
|
31
53
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
54
|
+
end
|
55
|
+
it 'every player has a first and last name' do
|
56
|
+
subject.each do |team|
|
57
|
+
team.players.each do |player|
|
58
|
+
expect(player.name.size).to be >= 7, "got: #{player.name.size} for #{player.name}"
|
59
|
+
expect(player.name.split.size).to be >= 2, "got: #{player.name.split.size} for #{player.name}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
it 'every player has a one- or two-digit number' do
|
64
|
+
subject.each do |team|
|
65
|
+
team.players.each do |player|
|
66
|
+
expect(player.number).to be_between(0, 99), "got: #{player.number} for #{player.name}"
|
67
|
+
# Jackie Robinson
|
68
|
+
expect(player.number).not_to eq(42), "got: #{player.number} for #{player.name}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
it 'every player has at least one position' do
|
73
|
+
subject.each do |team|
|
74
|
+
team.players.each do |player|
|
75
|
+
pending 'Some players do not have a position'
|
76
|
+
expect(player.positions.size).to be >= 1, "got: #{player.positions.size} for #{player.name}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
it 'every player has a starting year' do
|
81
|
+
subject.each do |team|
|
82
|
+
team.players.each do |player|
|
83
|
+
pending 'Some players do not have a starting year'
|
84
|
+
expect(player.from).to be >= 1995, "got: #{player.from} for #{player.name}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
it 'every player is active' do
|
89
|
+
subject.each do |team|
|
90
|
+
team.players.each do |player|
|
91
|
+
expect(player.to).to eq('Present'), "got: #{player.to} for #{player.name}"
|
92
|
+
end
|
36
93
|
end
|
37
94
|
end
|
38
95
|
|
39
|
-
context
|
96
|
+
context 'with timeout' do
|
40
97
|
before do
|
41
|
-
stub_request(:get, '
|
98
|
+
stub_request(:get, 'https://www.googleapis.com/freebase/v1/mqlread').with(:query => {:query => described_class.mql_query}).to_timeout
|
42
99
|
end
|
43
|
-
|
44
|
-
|
45
|
-
MLB::Team.reset
|
100
|
+
it 'does not raise an exception' do
|
101
|
+
expect { subject }.not_to raise_exception
|
46
102
|
end
|
103
|
+
end
|
47
104
|
|
48
|
-
|
49
|
-
|
50
|
-
|
105
|
+
context 'without connection' do
|
106
|
+
before do
|
107
|
+
stub_request(:get, 'https://www.googleapis.com/freebase/v1/mqlread').with(:query => {:query => described_class.mql_query}).to_raise(SocketError)
|
108
|
+
end
|
109
|
+
it 'does not raise an exception' do
|
110
|
+
expect { subject }.not_to raise_exception
|
51
111
|
end
|
52
112
|
end
|
113
|
+
|
53
114
|
end
|
metadata
CHANGED
@@ -1,95 +1,96 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mlb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Erik Michaels-Ober
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
RURoWmtTY1lla3c0Wk9lMTY0WnRaRzgxNm9BdjV4MHBHaXRTSWt1bVVwN1Y4
|
35
|
-
aUVaLzZlaHI3WTllClhPZzRlZXVuNUwvSmptakFSb1cya05kdmtSRDNjMkVl
|
36
|
-
U0xxV3ZRUnNCbHlwSGZoczZKSnVMbHlaUEdoVTNSL3YKU2YzbFZLcEJDV2dS
|
37
|
-
cEdUdnk0NVhWcEIrNTl5MzNQSm1FdVExUFRFT1l2UXlhbzlVS01BQWFBTi83
|
38
|
-
cVdRdGpsMApobHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
39
|
-
date: 2013-02-10 00:00:00.000000000 Z
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ8wDQYDVQQDDAZzZmVy
|
14
|
+
aWsxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2NvbTAe
|
15
|
+
Fw0xMzAyMDMxMDAyMjdaFw0xNDAyMDMxMDAyMjdaMD0xDzANBgNVBAMMBnNmZXJp
|
16
|
+
azEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
|
17
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0x5dx8uKxi7TkrIuyBUTJVB
|
18
|
+
v1o93nUB9j/y4M96gV2rYwAci1JPBseNd6Fybzjo3YGuHl7EQHuSHNaf1p2lxew/
|
19
|
+
y60JXIJBBgPcDK/KCP4NUHofm0jfoYD+H5uNJfHCNq7/ZsTxOtE3Ra92s0BCMTpm
|
20
|
+
wBMMlWR5MtdEhIYuBO4XhnejYgH0L/7BL2lymntVnsr/agdQoojQCN1IQmsRJvrR
|
21
|
+
duZRO3tZvoIo1pBc4JEehDuqCeyBgPLOqMoKtQlold1TQs1kWUBK7KWMFEhKC/Kg
|
22
|
+
zyzKRHQo9yDYwOvYngoBLY+T/lwCT4dyssdhzRbfnxAhaKu4SAssIwaC01yVowID
|
23
|
+
AQABozkwNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBS0ruDfRak5ci1OpDNX/ZdDEkIs
|
24
|
+
iTALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQADggEBAHHSMs/MP0sOaLkEv4Jo
|
25
|
+
zvkm3qn5A6t0vaHx774cmejyMU+5wySxRezspL7ULh9NeuK2OhU+Oe3TpqrAg5TK
|
26
|
+
R8GQILnVu2FemGA6sAkPDlcPtgA6ieI19PZOF6HVLmc/ID/dP/NgZWWzEeqQKmcK
|
27
|
+
2+HM+SEEDhZkScYekw4ZOe164ZtZG816oAv5x0pGitSIkumUp7V8iEZ/6ehr7Y9e
|
28
|
+
XOg4eeun5L/JjmjARoW2kNdvkRD3c2EeSLqWvQRsBlypHfhs6JJuLlyZPGhU3R/v
|
29
|
+
Sf3lVKpBCWgRpGTvy45XVpB+59y33PJmEuQ1PTEOYvQyao9UKMAAaAN/7qWQtjl0
|
30
|
+
hlw=
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2014-01-04 00:00:00.000000000 Z
|
40
33
|
dependencies:
|
41
34
|
- !ruby/object:Gem::Dependency
|
42
35
|
name: faraday
|
43
36
|
requirement: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
37
|
requirements:
|
46
|
-
- - ~>
|
38
|
+
- - "~>"
|
47
39
|
- !ruby/object:Gem::Version
|
48
40
|
version: '0.8'
|
49
|
-
- - <
|
41
|
+
- - "<"
|
50
42
|
- !ruby/object:Gem::Version
|
51
43
|
version: '0.10'
|
52
44
|
type: :runtime
|
53
45
|
prerelease: false
|
54
46
|
version_requirements: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
47
|
requirements:
|
57
|
-
- - ~>
|
48
|
+
- - "~>"
|
58
49
|
- !ruby/object:Gem::Version
|
59
50
|
version: '0.8'
|
60
|
-
- - <
|
51
|
+
- - "<"
|
61
52
|
- !ruby/object:Gem::Version
|
62
53
|
version: '0.10'
|
63
54
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
55
|
+
name: faraday_middleware
|
65
56
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
57
|
requirements:
|
68
|
-
- - ~>
|
58
|
+
- - "~>"
|
69
59
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
60
|
+
version: '0.9'
|
71
61
|
type: :runtime
|
72
62
|
prerelease: false
|
73
63
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
64
|
requirements:
|
76
|
-
- - ~>
|
65
|
+
- - "~>"
|
77
66
|
- !ruby/object:Gem::Version
|
78
|
-
version: '
|
67
|
+
version: '0.9'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: json
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1.8'
|
75
|
+
type: :runtime
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1.8'
|
79
82
|
- !ruby/object:Gem::Dependency
|
80
83
|
name: bundler
|
81
84
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
85
|
requirements:
|
84
|
-
- - ~>
|
86
|
+
- - "~>"
|
85
87
|
- !ruby/object:Gem::Version
|
86
88
|
version: '1.0'
|
87
89
|
type: :development
|
88
90
|
prerelease: false
|
89
91
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
92
|
requirements:
|
92
|
-
- - ~>
|
93
|
+
- - "~>"
|
93
94
|
- !ruby/object:Gem::Version
|
94
95
|
version: '1.0'
|
95
96
|
description: MLB.rb is a Ruby library for retrieving current Major League Baseball
|
@@ -99,44 +100,42 @@ executables: []
|
|
99
100
|
extensions: []
|
100
101
|
extra_rdoc_files: []
|
101
102
|
files:
|
102
|
-
- .yardopts
|
103
|
+
- ".yardopts"
|
103
104
|
- CONTRIBUTING.md
|
104
105
|
- LICENSE.md
|
105
106
|
- README.md
|
106
107
|
- Rakefile
|
107
|
-
- mlb.
|
108
|
+
- lib/mlb.rb
|
108
109
|
- lib/mlb/player.rb
|
109
110
|
- lib/mlb/request.rb
|
110
|
-
- lib/mlb/response/parse_json.rb
|
111
111
|
- lib/mlb/team.rb
|
112
112
|
- lib/mlb/version.rb
|
113
|
-
-
|
113
|
+
- mlb.gemspec
|
114
114
|
- spec/helper.rb
|
115
115
|
- spec/mlb_spec.rb
|
116
116
|
homepage: https://github.com/sferik/mlb
|
117
117
|
licenses:
|
118
118
|
- MIT
|
119
|
+
metadata: {}
|
119
120
|
post_install_message:
|
120
121
|
rdoc_options: []
|
121
122
|
require_paths:
|
122
123
|
- lib
|
123
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
125
|
requirements:
|
126
|
-
- -
|
126
|
+
- - ">="
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
130
|
requirements:
|
132
|
-
- -
|
131
|
+
- - ">="
|
133
132
|
- !ruby/object:Gem::Version
|
134
|
-
version: 1.3.
|
133
|
+
version: 1.3.5
|
135
134
|
requirements: []
|
136
135
|
rubyforge_project:
|
137
|
-
rubygems_version:
|
136
|
+
rubygems_version: 2.2.0
|
138
137
|
signing_key:
|
139
|
-
specification_version:
|
138
|
+
specification_version: 4
|
140
139
|
summary: MLB.rb is a Ruby library for retrieving current Major League Baseball players,
|
141
140
|
managers, teams, divisions, and leagues.
|
142
141
|
test_files:
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'multi_json'
|
3
|
-
|
4
|
-
module MLB
|
5
|
-
module Response
|
6
|
-
class ParseJson < Faraday::Response::Middleware
|
7
|
-
|
8
|
-
def parse(body)
|
9
|
-
case body
|
10
|
-
when /\A^\s*$\z/, nil
|
11
|
-
nil
|
12
|
-
else
|
13
|
-
MultiJson.decode(body)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def on_complete(env)
|
18
|
-
if respond_to?(:parse)
|
19
|
-
env[:body] = parse(env[:body]) unless [204, 301, 302, 304].include?(env[:status])
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|