init push - laying out the project
This commit is contained in:
39
portal/app/lib/integrations/betfair/connection.rb
Normal file
39
portal/app/lib/integrations/betfair/connection.rb
Normal file
@ -0,0 +1,39 @@
|
||||
module Integrations
|
||||
module Betfair
|
||||
class Connection
|
||||
|
||||
include HTTParty
|
||||
def initialize(account)
|
||||
@account = account
|
||||
self.class.pem @account.ssl_pem
|
||||
end
|
||||
|
||||
def api_headers
|
||||
{ 'X-Application' => @account.apikey, 'X-Authentication' => session_token, 'content-type' => 'application/json', 'accept' => 'application/json' }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def session_token
|
||||
# if
|
||||
puts 'Checking if session still fresh'
|
||||
if @account.last_session_token_saved_at && @account.last_session_token_saved_at > 10.hours.ago
|
||||
puts 'Returning cached session token'
|
||||
return @account.last_session_token
|
||||
end
|
||||
|
||||
puts 'Cache is stale or non-existent - getting fresh session key'
|
||||
url = 'https://identitysso-cert.betfair.com/api/certlogin'
|
||||
r = self.class.post(url, headers: { 'X-Application' => @account.apikey }, body: { username: @account.login_uid, password: @account.login_pass })
|
||||
resp = JSON.parse(r)
|
||||
if resp['loginStatus'] == 'SUCCESS'
|
||||
@account.update(last_session_token: resp['sessionToken'], last_session_token_saved_at: Time.now)
|
||||
return resp['sessionToken']
|
||||
end
|
||||
|
||||
raise '[Betfair Session token] Cannot get session to Betfair'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user