mlb 0.8.0 → 0.10.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 +4 -4
- data/CHANGELOG.md +10 -1
- data/LICENSE.txt +1 -1
- data/README.md +109 -35
- data/lib/mlb/award.rb +48 -0
- data/lib/mlb/awards.rb +22 -0
- data/lib/mlb/client.rb +14 -25
- data/lib/mlb/conference.rb +32 -0
- data/lib/mlb/conferences.rb +25 -0
- data/lib/mlb/connection.rb +1 -1
- data/lib/mlb/division.rb +44 -0
- data/lib/mlb/divisions.rb +30 -0
- data/lib/mlb/{response_parser.rb → error_handler.rb} +3 -11
- data/lib/mlb/handedness.rb +16 -0
- data/lib/mlb/league.rb +68 -0
- data/lib/mlb/leagues.rb +30 -0
- data/lib/mlb/player.rb +68 -17
- data/lib/mlb/players.rb +45 -0
- data/lib/mlb/position.rb +20 -0
- data/lib/mlb/redirect_handler.rb +1 -1
- data/lib/mlb/roster.rb +22 -0
- data/lib/mlb/roster_entry.rb +25 -0
- data/lib/mlb/season.rb +63 -0
- data/lib/mlb/season_date_info.rb +52 -0
- data/lib/mlb/seasons.rb +30 -0
- data/lib/mlb/sky.rb +11 -0
- data/lib/mlb/sport.rb +33 -0
- data/lib/mlb/sports.rb +22 -0
- data/lib/mlb/status.rb +11 -0
- data/lib/mlb/team.rb +60 -29
- data/lib/mlb/teams.rb +30 -0
- data/lib/mlb/transaction.rb +27 -30
- data/lib/mlb/transactions.rb +18 -0
- data/lib/mlb/venue.rb +16 -0
- data/lib/mlb/venues.rb +30 -0
- data/lib/mlb/version.rb +1 -1
- data/lib/mlb/wind_direction.rb +11 -0
- data/lib/mlb.rb +11 -2
- metadata +65 -16
- data/sig/mlb.rbs +0 -191
data/lib/mlb/venue.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require "equalizer"
|
2
|
+
require "shale"
|
3
|
+
|
4
|
+
module MLB
|
5
|
+
class Venue < Shale::Mapper
|
6
|
+
include Equalizer.new(:id)
|
7
|
+
|
8
|
+
attribute :id, Shale::Type::Integer
|
9
|
+
attribute :name, Shale::Type::String
|
10
|
+
attribute :link, Shale::Type::String
|
11
|
+
attribute :active, Shale::Type::Boolean
|
12
|
+
attribute :season, Shale::Type::Integer
|
13
|
+
|
14
|
+
alias_method :active?, :active
|
15
|
+
end
|
16
|
+
end
|
data/lib/mlb/venues.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require "shale"
|
2
|
+
require "uri"
|
3
|
+
require_relative "sport"
|
4
|
+
require_relative "venue"
|
5
|
+
|
6
|
+
module MLB
|
7
|
+
class Venues < Shale::Mapper
|
8
|
+
attribute :copyright, Shale::Type::String
|
9
|
+
attribute :venues, Venue, collection: true
|
10
|
+
|
11
|
+
def self.all(season: Time.now.year, sport: Sport.new(id: 1))
|
12
|
+
sport_id = sport.respond_to?(:id) ? sport.id : sport
|
13
|
+
params = {sportId: sport_id, season:}
|
14
|
+
query_string = URI.encode_www_form(params)
|
15
|
+
response = CLIENT.get("venues?#{query_string}")
|
16
|
+
venues = from_json(response)
|
17
|
+
venues.venues
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.find(venue, season: Time.now.year, sport: Sport.new(id: 1))
|
21
|
+
id = venue.respond_to?(:id) ? venue.id : venue
|
22
|
+
sport_id = sport.respond_to?(:id) ? sport.id : sport
|
23
|
+
params = {sportId: sport_id, season:}
|
24
|
+
query_string = URI.encode_www_form(params)
|
25
|
+
response = CLIENT.get("venues/#{id}?#{query_string}")
|
26
|
+
venues = from_json(response)
|
27
|
+
venues.venues.first
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/mlb/version.rb
CHANGED
data/lib/mlb.rb
CHANGED
@@ -1,3 +1,12 @@
|
|
1
1
|
require_relative "mlb/client"
|
2
|
-
require_relative "mlb/
|
3
|
-
require_relative "mlb/
|
2
|
+
require_relative "mlb/awards"
|
3
|
+
require_relative "mlb/conferences"
|
4
|
+
require_relative "mlb/divisions"
|
5
|
+
require_relative "mlb/leagues"
|
6
|
+
require_relative "mlb/players"
|
7
|
+
require_relative "mlb/roster"
|
8
|
+
require_relative "mlb/seasons"
|
9
|
+
require_relative "mlb/sports"
|
10
|
+
require_relative "mlb/teams"
|
11
|
+
require_relative "mlb/transactions"
|
12
|
+
require_relative "mlb/venues"
|
metadata
CHANGED
@@ -1,16 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mlb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Berlin
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: equalizer
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: 0.0.11
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 0.0.11
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: shale
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.2'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.2'
|
14
40
|
email: sferik@gmail.com
|
15
41
|
executables: []
|
16
42
|
extensions: []
|
@@ -22,8 +48,15 @@ files:
|
|
22
48
|
- bin/console
|
23
49
|
- bin/setup
|
24
50
|
- lib/mlb.rb
|
51
|
+
- lib/mlb/award.rb
|
52
|
+
- lib/mlb/awards.rb
|
25
53
|
- lib/mlb/client.rb
|
54
|
+
- lib/mlb/conference.rb
|
55
|
+
- lib/mlb/conferences.rb
|
26
56
|
- lib/mlb/connection.rb
|
57
|
+
- lib/mlb/division.rb
|
58
|
+
- lib/mlb/divisions.rb
|
59
|
+
- lib/mlb/error_handler.rb
|
27
60
|
- lib/mlb/errors/bad_gateway.rb
|
28
61
|
- lib/mlb/errors/bad_request.rb
|
29
62
|
- lib/mlb/errors/client_error.rb
|
@@ -44,26 +77,43 @@ files:
|
|
44
77
|
- lib/mlb/errors/too_many_requests.rb
|
45
78
|
- lib/mlb/errors/unauthorized.rb
|
46
79
|
- lib/mlb/errors/unprocessable_entity.rb
|
80
|
+
- lib/mlb/handedness.rb
|
81
|
+
- lib/mlb/league.rb
|
82
|
+
- lib/mlb/leagues.rb
|
47
83
|
- lib/mlb/player.rb
|
84
|
+
- lib/mlb/players.rb
|
85
|
+
- lib/mlb/position.rb
|
48
86
|
- lib/mlb/redirect_handler.rb
|
49
87
|
- lib/mlb/request_builder.rb
|
50
|
-
- lib/mlb/
|
88
|
+
- lib/mlb/roster.rb
|
89
|
+
- lib/mlb/roster_entry.rb
|
90
|
+
- lib/mlb/season.rb
|
91
|
+
- lib/mlb/season_date_info.rb
|
92
|
+
- lib/mlb/seasons.rb
|
93
|
+
- lib/mlb/sky.rb
|
94
|
+
- lib/mlb/sport.rb
|
95
|
+
- lib/mlb/sports.rb
|
96
|
+
- lib/mlb/status.rb
|
51
97
|
- lib/mlb/team.rb
|
98
|
+
- lib/mlb/teams.rb
|
52
99
|
- lib/mlb/transaction.rb
|
100
|
+
- lib/mlb/transactions.rb
|
101
|
+
- lib/mlb/venue.rb
|
102
|
+
- lib/mlb/venues.rb
|
53
103
|
- lib/mlb/version.rb
|
54
|
-
-
|
104
|
+
- lib/mlb/wind_direction.rb
|
55
105
|
homepage: https://sferik.github.io/mlb-ruby
|
56
106
|
licenses:
|
57
107
|
- MIT
|
58
108
|
metadata:
|
59
109
|
allowed_push_host: https://rubygems.org
|
60
|
-
rubygems_mfa_required: 'true'
|
61
|
-
homepage_uri: https://sferik.github.io/mlb-ruby
|
62
|
-
source_code_uri: https://github.com/sferik/mlb-ruby
|
63
|
-
changelog_uri: https://github.com/sferik/mlb-ruby/blob/master/CHANGELOG.md
|
64
110
|
bug_tracker_uri: https://github.com/sferik/mlb-ruby/issues
|
111
|
+
changelog_uri: https://github.com/sferik/mlb-ruby/blob/master/CHANGELOG.md
|
65
112
|
documentation_uri: https://rubydoc.info/gems/mlb/
|
66
|
-
|
113
|
+
funding_uri: https://github.com/sponsors/sferik/
|
114
|
+
homepage_uri: https://sferik.github.io/mlb-ruby
|
115
|
+
rubygems_mfa_required: 'true'
|
116
|
+
source_code_uri: https://github.com/sferik/mlb-ruby
|
67
117
|
rdoc_options: []
|
68
118
|
require_paths:
|
69
119
|
- lib
|
@@ -71,15 +121,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
121
|
requirements:
|
72
122
|
- - ">="
|
73
123
|
- !ruby/object:Gem::Version
|
74
|
-
version: 3.
|
124
|
+
version: '3.2'
|
75
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
126
|
requirements:
|
77
127
|
- - ">="
|
78
128
|
- !ruby/object:Gem::Version
|
79
129
|
version: '0'
|
80
130
|
requirements: []
|
81
|
-
rubygems_version: 3.
|
82
|
-
signing_key:
|
131
|
+
rubygems_version: 3.6.8
|
83
132
|
specification_version: 4
|
84
|
-
summary: A Ruby interface to the MLB
|
133
|
+
summary: A Ruby interface to the MLB Stats API.
|
85
134
|
test_files: []
|
data/sig/mlb.rbs
DELETED
@@ -1,191 +0,0 @@
|
|
1
|
-
module MLB
|
2
|
-
CLIENT: Client
|
3
|
-
VERSION: Gem::Version
|
4
|
-
|
5
|
-
class Error < StandardError
|
6
|
-
end
|
7
|
-
|
8
|
-
class ClientError < HTTPError
|
9
|
-
end
|
10
|
-
|
11
|
-
class BadGateway < ClientError
|
12
|
-
end
|
13
|
-
|
14
|
-
class BadRequest < ClientError
|
15
|
-
end
|
16
|
-
|
17
|
-
class ConnectionException < ClientError
|
18
|
-
end
|
19
|
-
|
20
|
-
class HTTPError < Error
|
21
|
-
attr_reader response : Net::HTTPResponse
|
22
|
-
attr_reader code : String
|
23
|
-
|
24
|
-
def initialize: (response: Net::HTTPResponse) -> void
|
25
|
-
end
|
26
|
-
|
27
|
-
class Forbidden < ClientError
|
28
|
-
end
|
29
|
-
|
30
|
-
class GatewayTimeout < ClientError
|
31
|
-
end
|
32
|
-
|
33
|
-
class Gone < ClientError
|
34
|
-
end
|
35
|
-
|
36
|
-
class InternalServerError < ServerError
|
37
|
-
end
|
38
|
-
|
39
|
-
class NetworkError < Error
|
40
|
-
end
|
41
|
-
|
42
|
-
class NotAcceptable < ClientError
|
43
|
-
end
|
44
|
-
|
45
|
-
class NotFound < ClientError
|
46
|
-
end
|
47
|
-
|
48
|
-
class PayloadTooLarge < ClientError
|
49
|
-
end
|
50
|
-
|
51
|
-
class ServerError < HTTPError
|
52
|
-
end
|
53
|
-
|
54
|
-
class ServiceUnavailable < ServerError
|
55
|
-
end
|
56
|
-
|
57
|
-
class TooManyRedirects < Error
|
58
|
-
end
|
59
|
-
|
60
|
-
class TooManyRequests < ClientError
|
61
|
-
end
|
62
|
-
|
63
|
-
class Unauthorized < ClientError
|
64
|
-
end
|
65
|
-
|
66
|
-
class UnprocessableEntity < ClientError
|
67
|
-
end
|
68
|
-
|
69
|
-
class Connection
|
70
|
-
DEFAULT_HOST: String
|
71
|
-
DEFAULT_PORT: Integer
|
72
|
-
DEFAULT_OPEN_TIMEOUT: Integer
|
73
|
-
DEFAULT_READ_TIMEOUT: Integer
|
74
|
-
DEFAULT_WRITE_TIMEOUT: Integer
|
75
|
-
DEFAULT_DEBUG_OUTPUT: IO
|
76
|
-
NETWORK_ERRORS: Array[(singleton(Errno::ECONNREFUSED) | singleton(Errno::ECONNRESET) | singleton(Net::OpenTimeout) | singleton(Net::ReadTimeout) | singleton(OpenSSL::SSL::SSLError))]
|
77
|
-
|
78
|
-
@proxy_url: URI::Generic | String
|
79
|
-
|
80
|
-
extend Forwardable
|
81
|
-
|
82
|
-
attr_accessor open_timeout : Float | Integer
|
83
|
-
attr_accessor read_timeout : Float | Integer
|
84
|
-
attr_accessor write_timeout : Float | Integer
|
85
|
-
attr_accessor debug_output : IO
|
86
|
-
|
87
|
-
attr_reader proxy_uri: URI::Generic?
|
88
|
-
attr_reader proxy_host : String?
|
89
|
-
attr_reader proxy_port : Integer?
|
90
|
-
attr_reader proxy_user : String?
|
91
|
-
attr_reader proxy_pass : String?
|
92
|
-
|
93
|
-
def initialize: (?open_timeout: Float | Integer, ?read_timeout: Float | Integer, ?write_timeout: Float | Integer, ?proxy_url: URI::Generic? | String?, ?debug_output: IO) -> void
|
94
|
-
def proxy_url=: (URI::Generic | String proxy_url) -> void
|
95
|
-
def perform: (request: Net::HTTPRequest) -> Net::HTTPResponse
|
96
|
-
|
97
|
-
private
|
98
|
-
def build_http_client: (?String host, ?Integer port) -> Net::HTTP
|
99
|
-
def configure_http_client: (Net::HTTP http_client) -> Net::HTTP
|
100
|
-
end
|
101
|
-
|
102
|
-
class RequestBuilder
|
103
|
-
HTTP_METHODS: Hash[Symbol, (singleton(Net::HTTP::Get) | singleton(Net::HTTP::Post) | singleton(Net::HTTP::Put) | singleton(Net::HTTP::Delete))]
|
104
|
-
DEFAULT_HEADERS: Hash[String, String]
|
105
|
-
|
106
|
-
def initialize: (?content_type: String, ?user_agent: String) -> void
|
107
|
-
def build: (http_method: Symbol, uri: URI::Generic, ?body: String?, ?headers: Hash[String, String]) -> (Net::HTTPRequest)
|
108
|
-
|
109
|
-
private
|
110
|
-
def create_request: (http_method: Symbol, uri: URI::Generic, body: String?) -> (Net::HTTPRequest)
|
111
|
-
def add_headers: (request: Net::HTTPRequest, headers: Hash[String, String]) -> void
|
112
|
-
def escape_query_params: (URI::Generic uri) -> URI::Generic
|
113
|
-
end
|
114
|
-
|
115
|
-
class RedirectHandler
|
116
|
-
DEFAULT_MAX_REDIRECTS: Integer
|
117
|
-
|
118
|
-
attr_reader connection: Connection
|
119
|
-
attr_reader request_builder: RequestBuilder
|
120
|
-
attr_reader max_redirects: Integer
|
121
|
-
def initialize: (?connection: Connection, ?request_builder: RequestBuilder, ?max_redirects: Integer) -> void
|
122
|
-
def handle: (response: Net::HTTPResponse, request: Net::HTTPRequest, base_url: String, ?redirect_count: Integer) -> Net::HTTPResponse
|
123
|
-
|
124
|
-
private
|
125
|
-
def build_new_uri: (Net::HTTPResponse response, String base_url) -> URI::Generic
|
126
|
-
def build_request: (Net::HTTPRequest request, URI::Generic new_uri, Integer response_code) -> Net::HTTPRequest
|
127
|
-
def send_new_request: (URI::Generic new_uri, Net::HTTPRequest new_request) -> Net::HTTPResponse
|
128
|
-
end
|
129
|
-
|
130
|
-
class ResponseParser
|
131
|
-
ERROR_MAP: Hash[Integer, singleton(BadGateway) | singleton(BadRequest) | singleton(ConnectionException) | singleton(Forbidden) | singleton(GatewayTimeout) | singleton(Gone) | singleton(InternalServerError) | singleton(NotAcceptable) | singleton(NotFound) | singleton(PayloadTooLarge) | singleton(ServiceUnavailable) | singleton(TooManyRequests) | singleton(Unauthorized) | singleton(UnprocessableEntity)]
|
132
|
-
JSON_CONTENT_TYPE_REGEXP: Regexp
|
133
|
-
|
134
|
-
def parse: (response: Net::HTTPResponse, ?array_class: Class?, ?object_class: Class?) -> untyped
|
135
|
-
|
136
|
-
private
|
137
|
-
def error: (Net::HTTPResponse response) -> HTTPError
|
138
|
-
def error_class: (Net::HTTPResponse response) -> (singleton(BadGateway) | singleton(BadRequest) | singleton(ConnectionException) | singleton(Forbidden) | singleton(GatewayTimeout) | singleton(Gone) | singleton(InternalServerError) | singleton(NotAcceptable) | singleton(NotFound) | singleton(PayloadTooLarge) | singleton(ServiceUnavailable) | singleton(TooManyRequests) | singleton(Unauthorized) | singleton(UnprocessableEntity))
|
139
|
-
def json?: (Net::HTTPResponse response) -> bool
|
140
|
-
end
|
141
|
-
|
142
|
-
class Client
|
143
|
-
DEFAULT_BASE_URL: String
|
144
|
-
DEFAULT_ARRAY_CLASS: singleton(Array)
|
145
|
-
DEFAULT_OBJECT_CLASS: singleton(Hash)
|
146
|
-
extend Forwardable
|
147
|
-
@connection: Connection
|
148
|
-
@request_builder: RequestBuilder
|
149
|
-
@redirect_handler: RedirectHandler
|
150
|
-
@response_parser: ResponseParser
|
151
|
-
|
152
|
-
attr_accessor base_url: String
|
153
|
-
attr_accessor default_array_class: singleton(Array)
|
154
|
-
attr_accessor default_object_class: singleton(Hash)
|
155
|
-
def initialize: (?base_url: String, ?open_timeout: Integer, ?read_timeout: Integer, ?write_timeout: Integer, ?debug_output: untyped, ?proxy_url: nil, ?default_array_class: singleton(Array), ?default_object_class: singleton(Hash), ?max_redirects: Integer) -> void
|
156
|
-
def get: (String endpoint, ?headers: Hash[String, String], ?array_class: Class, ?object_class: Class) -> untyped
|
157
|
-
def post: (String endpoint, ?String? body, ?headers: Hash[String, String], ?array_class: Class, ?object_class: Class) -> untyped
|
158
|
-
def put: (String endpoint, ?String? body, ?headers: Hash[String, String], ?array_class: Class, ?object_class: Class) -> untyped
|
159
|
-
def delete: (String endpoint, ?headers: Hash[String, String], ?array_class: Class, ?object_class: Class) -> untyped
|
160
|
-
|
161
|
-
private
|
162
|
-
def initialize_default_classes: (singleton(Array) default_array_class, singleton(Hash) default_object_class) -> singleton(Hash)
|
163
|
-
def execute_request: (:delete | :get | :post | :put http_method, String endpoint, ?body: String?, ?headers: Hash[String, String], ?array_class: Class, ?object_class: Class) -> nil
|
164
|
-
end
|
165
|
-
|
166
|
-
attr_accessor effective_date: String
|
167
|
-
attr_accessor player_id: String
|
168
|
-
attr_accessor team_id: String
|
169
|
-
|
170
|
-
class Team < Struct[untyped]
|
171
|
-
attr_accessor team_id: String
|
172
|
-
def self.new: -> void
|
173
|
-
def self.all: (?season: Integer, ?sort_order: String, ?all_star: false) -> Array[Team]
|
174
|
-
def roster: -> Array[Player]
|
175
|
-
end
|
176
|
-
|
177
|
-
class Transaction < Struct[untyped]
|
178
|
-
attr_accessor player_id: String
|
179
|
-
attr_accessor team_id: String
|
180
|
-
def self.new: -> void
|
181
|
-
def self.all: (?season: Integer, ?sort_order: String, ?all_star: false) -> Array[Team]
|
182
|
-
def team: -> Team
|
183
|
-
def player: -> Player
|
184
|
-
end
|
185
|
-
|
186
|
-
class Player < Struct[untyped]
|
187
|
-
attr_accessor player_id: String
|
188
|
-
def self.new: -> void
|
189
|
-
def team: -> Team
|
190
|
-
end
|
191
|
-
end
|