Class: Bunq::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/bunq/resource.rb

Constant Summary collapse

APPLICATION_JSON =
'application/json'
NO_PARAMS =
{}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(client, path) ⇒ Resource

Returns a new instance of Resource.



13
14
15
16
# File 'lib/bunq/resource.rb', line 13

def initialize(client, path)
  @client = client
  @path = path
end

Instance Method Details

#append(path) ⇒ Object



58
59
60
# File 'lib/bunq/resource.rb', line 58

def append(path)
  Bunq::Resource.new(client, @path + path)
end

#get(params = {}, &block) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/bunq/resource.rb', line 18

def get(params = {}, &block)
  resource.get({params: params}.merge(bunq_request_headers('GET', params))) do |response, request, result|
    verify_and_handle_response(response, request, result, &block)
  end
rescue RestClient::Exceptions::Timeout
  raise Bunq::Timeout
end

#post(payload, skip_verify: false, encrypt: false, custom_headers: {}, &block) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/bunq/resource.rb', line 26

def post(payload, skip_verify: false, encrypt: false, custom_headers: {}, &block)
  custom_headers = JSON.parse(custom_headers.to_json)
  body = post_body(payload, custom_headers)
  body, headers = client.encryptor.encrypt(body) if encrypt
  headers = headers.to_h.merge(custom_headers)

  headers = bunq_request_headers('POST', NO_PARAMS, body, headers)

  resource.post(body, headers) do |response, request, result|
    if skip_verify
      handle_response(response, request, result, &block)
    else
      verify_and_handle_response(response, request, result, &block)
    end
  end
rescue RestClient::Exceptions::Timeout
  raise Bunq::Timeout
end

#put(payload, encrypt: false, &block) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/bunq/resource.rb', line 45

def put(payload, encrypt: false, &block)
  body = JSON.generate(payload)
  body, headers = client.encryptor.encrypt(body) if encrypt

  headers = bunq_request_headers('PUT', NO_PARAMS, body, headers || {})

  resource.put(body, headers) do |response, request, result|
    verify_and_handle_response(response, request, result, &block)
  end
rescue RestClient::Exceptions::Timeout
  raise Bunq::Timeout
end

#with_session(&block) ⇒ Object



62
63
64
# File 'lib/bunq/resource.rb', line 62

def with_session(&block)
  client.with_session(&block)
end