Class: DeGiro::Connection

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/degiro/connection.rb

Constant Summary collapse

BASE_TRADER_URL =
'https://trader.degiro.nl'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(login, password) ⇒ Connection

Returns a new instance of Connection.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/degiro/connection.rb', line 18

def initialize(, 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: ,
      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

Instance Attribute Details

#session_idObject (readonly)

Returns the value of attribute session_id.



14
15
16
# File 'lib/degiro/connection.rb', line 14

def session_id
  @session_id
end

#urls_mapObject (readonly)

Returns the value of attribute urls_map.



14
15
16
# File 'lib/degiro/connection.rb', line 14

def urls_map
  @urls_map
end

#user_dataObject (readonly)

Returns the value of attribute user_data.



14
15
16
# File 'lib/degiro/connection.rb', line 14

def user_data
  @user_data
end