class PandaDoc::ApiClient

This class is responsible for making HTTP requests to the PandaDoc API.

Attributes

connection[R]
url_prefix[R]

Public Class Methods

new(multipart: false) click to toggle source
# File lib/panda_doc/api_client.rb, line 20
def initialize(multipart: false)
  @url_prefix = "/public/v1"
  @connection = Faraday.new(PandaDoc.configuration.endpoint) do |conn|
    if PandaDoc.configuration.api_key
      conn.request :authorization, "API-Key", PandaDoc.configuration.api_key
    else
      conn.request :authorization, :Bearer, PandaDoc.configuration.access_token
    end

    if multipart
      conn.request     :multipart
      conn.request     :url_encoded
    else
      conn.request     :json
    end

    if PandaDoc.configuration.logger
      conn.response    :logger, PandaDoc.configuration.logger, bodies: true
    end

    conn.response      :json, content_type: /\bjson$/
    conn.adapter       Faraday.default_adapter
  end
end
request(verb, path, data = {}) click to toggle source
# File lib/panda_doc/api_client.rb, line 7
def request(verb, path, data = {})
  if file = data.delete(:file)
    data = { file: file, data: JSON.generate(data) }
  end

  new(multipart: !!file).public_send(verb, path, **data)
end

Public Instance Methods

get(path, data = {}) click to toggle source
# File lib/panda_doc/api_client.rb, line 49
def get(path, data = {})
  connection.get(normalized_path(path), **data)
end
patch(path, data = {}) click to toggle source
# File lib/panda_doc/api_client.rb, line 53
def patch(path, data = {})
  connection.patch(normalized_path(path), **data)
end
post(path, data = {}) click to toggle source
# File lib/panda_doc/api_client.rb, line 45
def post(path, data = {})
  connection.post(normalized_path(path), **data)
end

Private Instance Methods

normalize_path(path) click to toggle source
# File lib/panda_doc/api_client.rb, line 63
def normalize_path(path)
  Faraday::Utils.normalize_path(path)
end
normalized_path(path) click to toggle source
# File lib/panda_doc/api_client.rb, line 59
def normalized_path(path)
  url_prefix + normalize_path(path)
end