Class: Billomat::Gateway

Inherits:
Object
  • Object
show all
Defined in:
lib/billomat/gateway.rb

Overview

This class can be used by the gem to communicate with the API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(method, path, body = {}) ⇒ Gateway

Creates a new Gateway

Examples:

Billomat::Gateway.new(:get, '/invoices')
Billomat::Gateway.new(:post, '/invoices', { 'invoice' => { ... } })

Parameters:

  • method (Symbol)

    The HTTP verb

  • path (String)

    The path of the resource

  • body (Hash) (defaults to: {})

    The payload for the request



26
27
28
29
30
# File 'lib/billomat/gateway.rb', line 26

def initialize(method, path, body = {})
  @method   = method.to_sym
  @path     = path
  @body     = body
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



14
15
16
# File 'lib/billomat/gateway.rb', line 14

def body
  @body
end

#methodObject (readonly)

Returns the value of attribute method.



14
15
16
# File 'lib/billomat/gateway.rb', line 14

def method
  @method
end

#pathObject (readonly)

Returns the value of attribute path.



14
15
16
# File 'lib/billomat/gateway.rb', line 14

def path
  @path
end

Instance Method Details

#configBillomat::Configuration

Returns The global gem configuration.

Returns:



70
71
72
# File 'lib/billomat/gateway.rb', line 70

def config
  Billomat.configuration
end

#headersHash

Returns The headers for the request.

Returns:

  • (Hash)

    The headers for the request.



61
62
63
64
65
66
67
# File 'lib/billomat/gateway.rb', line 61

def headers
  {
    'Accept'           => 'application/json',
    'Content-Type'     => 'application/json',
    'X-BillomatApiKey' => config.api_key
  }
end

#runHash

Executes the API call

Returns:

  • (Hash)

    The response body

Raises:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/billomat/gateway.rb', line 35

def run
  resp = RestClient::Request.execute(
    method:   method,
    url:      url,
    timeout:  timeout,
    headers:  headers,
    payload:  body.to_json
  )

  raise GatewayError, resp.body if resp.code > 299
  return nil if resp.body.empty?

  JSON.parse(resp.body)
end

#timeoutInteger

Returns:

  • (Integer)


56
57
58
# File 'lib/billomat/gateway.rb', line 56

def timeout
  5
end

#urlString

Returns The complete URL for the request.

Returns:

  • (String)

    The complete URL for the request



51
52
53
# File 'lib/billomat/gateway.rb', line 51

def url
  "https://#{config.subdomain}.billomat.net/api#{path}"
end