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_client/connection.rb, line 20
def initialize(login, password)

  my_logger = Logger.new("degiro_client.log")
  my_logger.level = Logger::DEBUG

  @conn = Faraday.new(url: BASE_TRADER_URL) do |builder|
    builder.use :cookie_jar
    builder.use Faraday::Response::RaiseError
    builder.response :detailed_logger, my_logger
    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))
  url = "#{@urls_map['pa_url']}/client?sessionId=#{@session_id}"
  @user_data = UserData.new(JSON.parse(@conn.get(url).body)["data"])
end