mlb_stats_api 0.1.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
  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