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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad5cafad64b3f7d2aa47ef0de1d7fedecedaa5bd7ff862516537ff77d51749fb
4
- data.tar.gz: d605bab8330e7ab913d5f31b1b15001e4ffd34fc12d4004a4cef437f0bbe7235
3
+ metadata.gz: 55ca9263a1b63202d6be965be52a6b11bbddadc05686da3292b89d4f457c4d25
4
+ data.tar.gz: d20b941ba5156ab4b9ac57a0e3933a687bbd9d5d8de825c77ab8636ad5e43ba0
5
5
  SHA512:
6
- metadata.gz: cfebd3bb843dca944931a763332af217fc7fa3f7022b7468fe401a66ffc1910a6c315bae5c41c6058da8f42e06fe3cce518c499138199b66b6fbea566c120c0a
7
- data.tar.gz: 7326bf2cabd489440404423f59ce5b8802eff86ddb5f4c73df128a03d6e0c7d0c7061eac225b717c0edad2bbdf15b9d52af7e986d32aeed00c2f52665998e9f6
6
+ metadata.gz: 36a15de1cc85d4cbeaf568325624d20cff3eabd16bf32e3406146895f805bb235fe61f16e13be9f4acc693ec3baad2ccd4bfed1d1d69d5c313fbb8598bf13c76
7
+ data.tar.gz: 2e376ec9294dd988e781b75831fedd55deff7c2ddc42088fa32791e469748784c25169deb52ba6c792ad4212e60f8fb03212e1db509543766cfbaacbac086846
@@ -34,15 +34,13 @@ module MLBStatsAPI
34
34
 
35
35
  attr_accessor :logger, :cache
36
36
 
37
- def initialize(logger: false, cache: nil)
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&.info("Fetching URL: #{url} Query: #{query.inspect}")
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 fetch(key)
64
- value = @cache[key]
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[key] = value
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
@@ -5,6 +5,8 @@ module MLBStatsAPI
5
5
  LEAGUES = {
6
6
  american: 103,
7
7
  national: 104,
8
+ al: 103,
9
+ nl: 104,
8
10
  big_east: 107,
9
11
  acc: 108,
10
12
  texas: 109,
@@ -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
- STANDINGS_TYPES = {
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(type:, league_ids:, season: nil)
20
- raise 'Invalid standings type.' unless STANDINGS_TYPES[type]
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/#{STANDINGS_TYPES[type]}",
24
- leagueId: Array(league_ids).join(','),
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
@@ -3,7 +3,7 @@
3
3
  module MLBStatsAPI
4
4
  module Teams
5
5
  def team(team_id)
6
- data = fetch("mlb_stats_api:teams:#{team_id}") do
6
+ data = load("mlb_stats_api:teams:#{team_id}") do
7
7
  get("/teams/#{team_id}", hydrate: 'venue(timezone)').dig('teams', 0)
8
8
  end
9
9
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MLBStatsAPI
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
@@ -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.5'
27
- spec.add_development_dependency 'webmock', '~> 2.3'
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.1.1
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-06-10 00:00:00.000000000 Z
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.5'
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.5'
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: '2.3'
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: '2.3'
68
+ version: '3.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hana
71
71
  requirement: !ruby/object:Gem::Requirement