Class: YahooFinanceClient::Session

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/yahoo_finance_client/session.rb

Overview

Handles Yahoo Finance authentication with multiple fallback strategies

Constant Summary collapse

SESSION_TTL =
60
USER_AGENT =
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0"
"https://fc.yahoo.com"
CRUMB_URL_QUERY1 =
"https://query1.finance.yahoo.com/v1/test/getcrumb"
CRUMB_URL_QUERY2 =
"https://query2.finance.yahoo.com/v1/test/getcrumb"
HOMEPAGE_URL =
"https://finance.yahoo.com"
CRUMB_PATTERNS =
[/"crumb"\s*:\s*"([^"]+)"/, /"CrsrfToken"\s*:\s*"([^"]+)"/, /crumb=([a-zA-Z0-9_.~-]+)/].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSession

Returns a new instance of Session.



21
22
23
# File 'lib/yahoo_finance_client/session.rb', line 21

def initialize
  reset!
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



19
20
21
# File 'lib/yahoo_finance_client/session.rb', line 19

def base_url
  @base_url
end

Returns the value of attribute cookie.



19
20
21
# File 'lib/yahoo_finance_client/session.rb', line 19

def cookie
  @cookie
end

#crumbObject (readonly)

Returns the value of attribute crumb.



19
20
21
# File 'lib/yahoo_finance_client/session.rb', line 19

def crumb
  @crumb
end

Instance Method Details

#ensure_authenticatedObject



25
26
27
28
29
# File 'lib/yahoo_finance_client/session.rb', line 25

def ensure_authenticated
  return if valid_session?

  authenticate!
end

#invalidate!Object



31
32
33
# File 'lib/yahoo_finance_client/session.rb', line 31

def invalidate!
  reset!
end

#valid_session?Boolean

Returns:

  • (Boolean)


35
36
37
38
39
# File 'lib/yahoo_finance_client/session.rb', line 35

def valid_session?
  return false unless @cookie && @crumb && @authenticated_at

  Time.now - @authenticated_at < SESSION_TTL
end