mlb_stats_api 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mlb_stats_api/client.rb +5 -7
- data/lib/mlb_stats_api/divisions.rb +10 -0
- data/lib/mlb_stats_api/leagues.rb +2 -0
- data/lib/mlb_stats_api/live_feed.rb +4 -0
- data/lib/mlb_stats_api/schedules.rb +13 -0
- data/lib/mlb_stats_api/standings.rb +13 -6
- data/lib/mlb_stats_api/teams.rb +1 -1
- data/lib/mlb_stats_api/version.rb +1 -1
- data/mlb_stats_api.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55ca9263a1b63202d6be965be52a6b11bbddadc05686da3292b89d4f457c4d25
|
4
|
+
data.tar.gz: d20b941ba5156ab4b9ac57a0e3933a687bbd9d5d8de825c77ab8636ad5e43ba0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36a15de1cc85d4cbeaf568325624d20cff3eabd16bf32e3406146895f805bb235fe61f16e13be9f4acc693ec3baad2ccd4bfed1d1d69d5c313fbb8598bf13c76
|
7
|
+
data.tar.gz: 2e376ec9294dd988e781b75831fedd55deff7c2ddc42088fa32791e469748784c25169deb52ba6c792ad4212e60f8fb03212e1db509543766cfbaacbac086846
|
data/lib/mlb_stats_api/client.rb
CHANGED
@@ -34,15 +34,13 @@ module MLBStatsAPI
|
|
34
34
|
|
35
35
|
attr_accessor :logger, :cache
|
36
36
|
|
37
|
-
def initialize(logger:
|
37
|
+
def initialize(logger: IO::NULL, cache: nil)
|
38
38
|
@cache = if cache
|
39
39
|
Moneta.new(cache.class.to_s.to_sym, backend: cache)
|
40
40
|
else
|
41
41
|
Moneta.new(:Null)
|
42
42
|
end
|
43
43
|
|
44
|
-
return if logger == false
|
45
|
-
|
46
44
|
@logger = logger.is_a?(::Logger) ? logger : ::Logger.new(logger)
|
47
45
|
end
|
48
46
|
|
@@ -51,7 +49,7 @@ module MLBStatsAPI
|
|
51
49
|
|
52
50
|
query.reject! { |_, v| v.nil? }
|
53
51
|
|
54
|
-
@logger
|
52
|
+
@logger.info("Fetching URL: #{url} Query: #{query.inspect}")
|
55
53
|
|
56
54
|
response = self.class.get url, query: query.merge(t: Time.now.to_i)
|
57
55
|
|
@@ -60,14 +58,14 @@ module MLBStatsAPI
|
|
60
58
|
response.parsed_response
|
61
59
|
end
|
62
60
|
|
63
|
-
def
|
64
|
-
value = @cache
|
61
|
+
def load(key, options = {})
|
62
|
+
value = @cache.load(key)
|
65
63
|
|
66
64
|
return value if value
|
67
65
|
|
68
66
|
value = yield
|
69
67
|
|
70
|
-
@cache
|
68
|
+
@cache.store(key, value, options)
|
71
69
|
|
72
70
|
value
|
73
71
|
end
|
@@ -2,5 +2,15 @@
|
|
2
2
|
|
3
3
|
module MLBStatsAPI
|
4
4
|
module Divisions
|
5
|
+
# There are actually far more divisions from other leagues in the API.
|
6
|
+
# I don't think I'll add them until necessary.
|
7
|
+
DIVISIONS = {
|
8
|
+
al_east: 201,
|
9
|
+
al_central: 202,
|
10
|
+
al_west: 200,
|
11
|
+
nl_east: 204,
|
12
|
+
nl_central: 205,
|
13
|
+
nl_west: 203
|
14
|
+
}.freeze
|
5
15
|
end
|
6
16
|
end
|
@@ -52,6 +52,8 @@ module MLBStatsAPI
|
|
52
52
|
@data = @api.get("/game/#{@id}/feed/live", version: '1.1')
|
53
53
|
|
54
54
|
true
|
55
|
+
rescue Net::OpenTimeout
|
56
|
+
false
|
55
57
|
end
|
56
58
|
|
57
59
|
def update!
|
@@ -68,6 +70,8 @@ module MLBStatsAPI
|
|
68
70
|
@data = diffs if diffs.is_a?(Hash)
|
69
71
|
|
70
72
|
true
|
73
|
+
rescue Net::OpenTimeout
|
74
|
+
false
|
71
75
|
end
|
72
76
|
|
73
77
|
def process_diffs(diffs)
|
@@ -2,5 +2,18 @@
|
|
2
2
|
|
3
3
|
module MLBStatsAPI
|
4
4
|
module Schedules
|
5
|
+
SCHEDULE_TYPES = {
|
6
|
+
default: '/schedule',
|
7
|
+
postseason: '/schedule/postseason',
|
8
|
+
tied: '/schedule/games/tied',
|
9
|
+
postseason_series: '/schedule/postseason/series',
|
10
|
+
tune_in: '/schedule/postseason/tuneIn'
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
def schedule(type = :default, options = {})
|
14
|
+
raise ArgumentError, 'invalid schedule type' unless SCHEDULE_TYPES[type]
|
15
|
+
|
16
|
+
get(SCHEDULE_TYPES[type], options)
|
17
|
+
end
|
5
18
|
end
|
6
19
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module MLBStatsAPI
|
4
4
|
module Standings
|
5
|
-
|
5
|
+
TYPES = {
|
6
6
|
regular_season: 'regularSeason',
|
7
7
|
wild_card: 'wildCard',
|
8
8
|
division_leaders: 'divisionLeaders',
|
@@ -16,13 +16,20 @@ module MLBStatsAPI
|
|
16
16
|
by_league: 'byLeague'
|
17
17
|
}.freeze
|
18
18
|
|
19
|
-
def standings(
|
20
|
-
raise 'Invalid standings type.' unless
|
19
|
+
def standings(leagues:, type: :regular_season, season: nil, hydrate: 'team')
|
20
|
+
raise 'Invalid standings type.' unless TYPES[type]
|
21
|
+
|
22
|
+
league_ids = Leagues::LEAGUES.values_at(*leagues)
|
23
|
+
|
24
|
+
if league_ids.none?
|
25
|
+
raise 'Invalid league(s) - see Leagues::LEAGUES for available names.'
|
26
|
+
end
|
21
27
|
|
22
28
|
get(
|
23
|
-
"/standings/#{
|
24
|
-
leagueId:
|
25
|
-
season: (season || Date.today.year)
|
29
|
+
"/standings/#{TYPES[type]}",
|
30
|
+
leagueId: league_ids.join(','),
|
31
|
+
season: (season || Date.today.year),
|
32
|
+
hydrate: hydrate
|
26
33
|
)
|
27
34
|
end
|
28
35
|
end
|
data/lib/mlb_stats_api/teams.rb
CHANGED
data/mlb_stats_api.gemspec
CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', '> 1.16'
|
25
25
|
spec.add_development_dependency 'rake', '> 10.0'
|
26
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
27
|
-
spec.add_development_dependency 'webmock', '~>
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.8'
|
27
|
+
spec.add_development_dependency 'webmock', '~> 3.4'
|
28
28
|
|
29
29
|
spec.add_dependency 'hana', '~> 1.3'
|
30
30
|
spec.add_dependency 'httparty', '~> 0.16'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mlb_stats_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Hoffman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
47
|
+
version: '3.8'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
54
|
+
version: '3.8'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: webmock
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: hana
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|