Class: SportsOddsAPI::Client

Inherits:
Internal::Transport::BaseClient show all
Defined in:
lib/sports_odds_api/client.rb,
sig/sports_odds_api/client.rbs

Constant Summary collapse

DEFAULT_MAX_RETRIES =

Default max number of retries to attempt after a failed retryable request.

Returns:

  • (2)
2
DEFAULT_TIMEOUT_IN_SECONDS =

Default per-request timeout.

Returns:

  • (Float)
60.0
DEFAULT_INITIAL_RETRY_DELAY =

Default initial retry delay in seconds. Overall delay is calculated using exponential backoff + jitter.

Returns:

  • (Float)
0.5
DEFAULT_MAX_RETRY_DELAY =

Default max retry delay in seconds.

Returns:

  • (Float)
8.0

Constants inherited from Internal::Transport::BaseClient

Internal::Transport::BaseClient::MAX_REDIRECTS, Internal::Transport::BaseClient::PLATFORM_HEADERS, Internal::Transport::BaseClient::SportsOddsAPI

Instance Attribute Summary collapse

Attributes inherited from Internal::Transport::BaseClient

#base_url, #headers, #idempotency_header, #initial_retry_delay, #max_retries, #max_retry_delay, #requester, #timeout

Instance Method Summary collapse

Methods inherited from Internal::Transport::BaseClient

follow_redirect, #inspect, reap_connection!, #request, #send_request, should_retry?, validate!

Methods included from Internal::Util::SorbetRuntimeSupport

#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, #to_sorbet_type, to_sorbet_type

Constructor Details

#initialize(api_key_header: ENV["SPORTS_ODDS_API_KEY_HEADER"], api_key_param: ENV["SPORTS_ODDS_API_KEY_HEADER"], base_url: ENV["SPORTS_GAME_ODDS_BASE_URL"], max_retries: self.class::DEFAULT_MAX_RETRIES, timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS, initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY, max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY) ⇒ Client

Creates and returns a new client for interacting with the API.

"https://api.example.com/v2/". Defaults to ENV["SPORTS_GAME_ODDS_BASE_URL"]

Parameters:

  • api_key_header (String, nil) (defaults to: ENV["SPORTS_ODDS_API_KEY_HEADER"])

    API key via header Defaults to ENV["SPORTS_ODDS_API_KEY_HEADER"]

  • api_key_param (String, nil) (defaults to: ENV["SPORTS_ODDS_API_KEY_HEADER"])

    API key via query param Defaults to ENV["SPORTS_ODDS_API_KEY_HEADER"]

  • base_url (String, nil) (defaults to: ENV["SPORTS_GAME_ODDS_BASE_URL"])

    Override the default base URL for the API, e.g.,

  • max_retries (Integer) (defaults to: self.class::DEFAULT_MAX_RETRIES)

    Max number of retries to attempt after a failed retryable request.

  • timeout (Float) (defaults to: self.class::DEFAULT_TIMEOUT_IN_SECONDS)
  • initial_retry_delay (Float) (defaults to: self.class::DEFAULT_INITIAL_RETRY_DELAY)
  • max_retry_delay (Float) (defaults to: self.class::DEFAULT_MAX_RETRY_DELAY)


80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/sports_odds_api/client.rb', line 80

def initialize(
  api_key_header: ENV["SPORTS_ODDS_API_KEY_HEADER"],
  api_key_param: ENV["SPORTS_ODDS_API_KEY_HEADER"],
  base_url: ENV["SPORTS_GAME_ODDS_BASE_URL"],
  max_retries: self.class::DEFAULT_MAX_RETRIES,
  timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS,
  initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
  max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY
)
  base_url ||= "https://api.sportsgameodds.com/v2"

  @api_key_header = api_key_header&.to_s
  @api_key_param = api_key_param&.to_s

  super(
    base_url: base_url,
    timeout: timeout,
    max_retries: max_retries,
    initial_retry_delay: initial_retry_delay,
    max_retry_delay: max_retry_delay
  )

  @events = SportsOddsAPI::Resources::Events.new(client: self)
  @teams = SportsOddsAPI::Resources::Teams.new(client: self)
  @players = SportsOddsAPI::Resources::Players.new(client: self)
  @leagues = SportsOddsAPI::Resources::Leagues.new(client: self)
  @sports = SportsOddsAPI::Resources::Sports.new(client: self)
  @stats = SportsOddsAPI::Resources::Stats.new(client: self)
  @account = SportsOddsAPI::Resources::Account.new(client: self)
  @stream = SportsOddsAPI::Resources::Stream.new(client: self)
end

Instance Attribute Details

#accountSportsOddsAPI::Resources::Account (readonly)



45
46
47
# File 'lib/sports_odds_api/client.rb', line 45

def 
  @account
end

#api_key_headerString? (readonly)

API key via header

Returns:

  • (String, nil)


20
21
22
# File 'lib/sports_odds_api/client.rb', line 20

def api_key_header
  @api_key_header
end

#api_key_paramString? (readonly)

API key via query param

Returns:

  • (String, nil)


24
25
26
# File 'lib/sports_odds_api/client.rb', line 24

def api_key_param
  @api_key_param
end

#eventsSportsOddsAPI::Resources::Events (readonly)



27
28
29
# File 'lib/sports_odds_api/client.rb', line 27

def events
  @events
end

#leaguesSportsOddsAPI::Resources::Leagues (readonly)



36
37
38
# File 'lib/sports_odds_api/client.rb', line 36

def leagues
  @leagues
end

#playersSportsOddsAPI::Resources::Players (readonly)



33
34
35
# File 'lib/sports_odds_api/client.rb', line 33

def players
  @players
end

#sportsSportsOddsAPI::Resources::Sports (readonly)



39
40
41
# File 'lib/sports_odds_api/client.rb', line 39

def sports
  @sports
end

#statsSportsOddsAPI::Resources::Stats (readonly)



42
43
44
# File 'lib/sports_odds_api/client.rb', line 42

def stats
  @stats
end

#streamSportsOddsAPI::Resources::Stream (readonly)



48
49
50
# File 'lib/sports_odds_api/client.rb', line 48

def stream
  @stream
end

#teamsSportsOddsAPI::Resources::Teams (readonly)



30
31
32
# File 'lib/sports_odds_api/client.rb', line 30

def teams
  @teams
end