Class: GoCardlessPro::ApiService

Inherits:
Object
  • Object
show all
Defined in:
lib/gocardless_pro/api_service.rb

Overview

GoCardless API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, token, options = {}) ⇒ ApiService

Initialize an APIService

Parameters:

  • url (String)

    the URL to make requests to

  • key (String)

    the API Key ID to use

  • secret (String)

    the API key secret to use

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

    additional options to use when creating the service

Raises:

  • (ArgumentError)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gocardless_pro/api_service.rb', line 20

def initialize(url, token, options = {})
  @url = url
  root_url, @path_prefix = unpack_url(url)
  http_adapter = options[:http_adapter] || [:net_http]
  connection_options = options.fetch(:connection_options, {})

  @connection = Faraday.new(root_url, connection_options) do |faraday|
    faraday.response :raise_gocardless_errors

    faraday.adapter(*http_adapter)
  end

  @headers = options[:default_headers] || {}
  @headers['Authorization'] = "Bearer #{token}"
  @on_idempotency_conflict = options[:on_idempotency_conflict] || :fetch

  return if %i[fetch raise].include?(@on_idempotency_conflict)

  raise ArgumentError, 'Unknown mode for :on_idempotency_conflict'
end

Instance Attribute Details

#on_idempotency_conflictObject (readonly)

Returns the value of attribute on_idempotency_conflict.



12
13
14
# File 'lib/gocardless_pro/api_service.rb', line 12

def on_idempotency_conflict
  @on_idempotency_conflict
end

Instance Method Details

#inspectObject Also known as: to_s

inspect the API Service



55
56
57
58
59
# File 'lib/gocardless_pro/api_service.rb', line 55

def inspect
  url = URI.parse(@url)
  url.password = 'REDACTED' unless url.password.nil?
  "#<GoCardlessPro::Client url=\"#{url}\">"
end

#make_request(method, path, options = {}) ⇒ Object

Make a request to the API

Parameters:

  • method (Symbol)

    the method to use to make the request

  • path (String)

    the URL (without the base domain) to make the request to

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

    the options hash

Raises:

  • (ArgumentError)


46
47
48
49
50
51
52
# File 'lib/gocardless_pro/api_service.rb', line 46

def make_request(method, path, options = {})
  raise ArgumentError, 'options must be a hash' unless options.is_a?(Hash)

  options[:headers] ||= {}
  options[:headers] = @headers.merge(options[:headers])
  Request.new(@connection, method, @path_prefix + path, options).request
end