Class: Veryfi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/veryfi/client.rb

Overview

The user-facing entry point.

Examples:

Basic usage

client = Veryfi::Client.new(
  client_id:     ENV["VERYFI_CLIENT_ID"],
  client_secret: ENV["VERYFI_CLIENT_SECRET"],
  username:      ENV["VERYFI_USERNAME"],
  api_key:       ENV["VERYFI_API_KEY"]
)
client.document.process(file_path: "./receipt.jpg")

Custom Faraday configuration (persistent connections + retries)

client = Veryfi::Client.new(
  client_id:     "",
  client_secret: "",
  username:      "",
  api_key:       "",
  faraday: ->(conn) {
    conn.request  :retry, max: 3, interval: 0.5, backoff_factor: 2,
                          retry_statuses: [429, 502, 503, 504]
    conn.response :logger, Rails.logger if defined?(Rails)
    conn.adapter  :net_http_persistent
  }
)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client_id:, client_secret:, username:, api_key:, base_url: "https://api.veryfi.com/api/", api_version: "v8", timeout: 20, faraday: nil) ⇒ Client

Returns a new instance of Client.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/veryfi/client.rb', line 46

def initialize(
  client_id:,
  client_secret:,
  username:,
  api_key:,
  base_url: "https://api.veryfi.com/api/",
  api_version: "v8",
  timeout: 20,
  faraday: nil
)
  @request = Veryfi::Request.new(
    client_id, client_secret, username, api_key,
    base_url, api_version, timeout, faraday
  )
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



44
45
46
# File 'lib/veryfi/client.rb', line 44

def request
  @request
end

Class Method Details

.api_namespace(name, klass) ⇒ void

This method returns an undefined value.

DSL: declare an API namespace as a lazily-memoized reader.

Examples:

api_namespace :document, Veryfi::Api::Document

Parameters:

  • name (Symbol)
  • klass (Class)

    API class accepting a Veryfi::Request in its constructor



37
38
39
40
41
42
# File 'lib/veryfi/client.rb', line 37

def self.api_namespace(name, klass)
  ivar = :"@_#{name}"
  define_method(name) do
    instance_variable_get(ivar) || instance_variable_set(ivar, klass.new(request))
  end
end

Instance Method Details

#api_urlObject



79
80
81
# File 'lib/veryfi/client.rb', line 79

def api_url
  request.api_url
end