Class: FractalApi::Consent

Inherits:
BaseModel show all
Defined in:
lib/fractal_api/consent.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseModel

#as_json, attribute_aliases, attributes, format_url, #format_url, get, #get, #initialize, key_transformer, post, #post, put, #put

Constructor Details

This class inherits a constructor from FractalApi::BaseModel

Class Method Details

.build(json:) ⇒ Object



20
21
22
23
24
# File 'lib/fractal_api/consent.rb', line 20

def self.build(json:)
  super.tap do |record|
    record.date_created = Time.parse(record.date_created) if record.date_created
  end
end

.build_from_state(state) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fractal_api/consent.rb', line 26

def self.build_from_state(state)
  decoded = JSON.parse(Base64.decode64(state), symbolize_names: true)

  new(
    consent_id: decoded[:accReq],
    company_id: decoded[:cId],
    bank_id: decoded[:bId]
  )
rescue JSON::ParserError
  nil
end

.create(bank_id, company_id, redirect_url) ⇒ Object



13
14
15
16
17
18
# File 'lib/fractal_api/consent.rb', line 13

def self.create(bank_id, company_id, redirect_url)
  params = { bankId: bank_id.to_s, redirect: redirect_url, permissions: 'READALLBANKDATA' }
  result = post('/banking/v2/consents', params: params, headers: { 'X-Company-Id' => company_id })

  build(json: result.body)
end

Instance Method Details

#update(code:, id_token:, state:) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/fractal_api/consent.rb', line 38

def update(code:, id_token:, state:)
  url = format_url(
    '/banking/v2/consents/:consent_id',
    consent_id: consent_id
  )

  result = put(
    url,
    params: { bankId: bank_id, code: code, id_token: id_token, state: state },
    headers: { 'X-Company-Id' => company_id }
  )

  result.body
end