class DeGiro::Connection

Constants

BASE_TRADER_URL

Attributes

session_id[R]
urls_map[R]
user_data[R]

Public Class Methods

new(login, password) click to toggle source
# File lib/degiro/connection.rb, line 18
def initialize(login, password)
  @conn = Faraday.new(url: BASE_TRADER_URL) do |builder|
    builder.use :cookie_jar
    builder.use Faraday::Response::RaiseError
    builder.adapter Faraday.default_adapter
  end

  response = @conn.post('/login/secure/login') do |req|
    req.headers['Content-Type'] = 'application/json'
    req.body = {
      username: login,
      password: password,
      isPassCodeReset: false,
      isRedirectToMobile: false,
      queryParams: { reason: 'session_expired' }
    }.to_json
  end

  @session_id = response.headers['set-cookie'][/JSESSIONID=(.*?);/m, 1]
  raise MissingSessionIdError, 'Could not find valid session id' if @session_id == '' || @session_id.nil?

  @urls_map = UrlsMap.new(JSON.parse(@conn.get('/login/secure/config').body))
  @user_data = UserData.new(JSON.parse(@conn.get("#{@urls_map['pa_url']}/client?sessionId=#{@session_id}").body)['data'])
end