class ZaloAPI::Client

Attributes

config[R]

@return [Configuration] Config instance

Public Class Methods

new() { |config| ... } click to toggle source
# File lib/zalo_api/client.rb, line 17
def initialize
  raise ArgumentError, 'block not given' unless block_given?

  @config = ZaloAPI::Configuration.new
  yield config

  config.retry = !!config.retry # nil -> false
  set_default_logger
end

Public Instance Methods

build_connection() click to toggle source

Called by {#connection} to build a connection. Can be overwritten in a subclass to add additional middleware and make other configuration changes.

Uses middleware according to configuration options.

Request logger if logger is not nil

Retry middleware if retry is true

# File lib/zalo_api/client.rb, line 44
def build_connection
  Faraday.new(config.options) do |builder|
    # response
    builder.use ZaloAPI::Middleware::Response::ParseJson
    builder.use ZaloAPI::Middleware::Response::SanitizeResponse
    builder.use ZaloAPI::Middleware::Response::Logger, config.logger if config.logger

    # request
    builder.use ZaloAPI::Middleware::Request::UrlBasedAccessToken, config.access_token
    builder.use ZaloAPI::Middleware::Request::EncodeJson
    builder.use ZendeskAPI::Middleware::Request::Retry, :logger => config.logger if config.retry

    builder.adapter(Faraday.default_adapter)
  end
end
connection() click to toggle source

Creates a connection if there is none, otherwise returns the existing connection.

@return [Faraday::Connection] Faraday connection for the client

# File lib/zalo_api/client.rb, line 30
def connection
  @connection ||= build_connection
  return @connection
end
set_default_logger() click to toggle source
# File lib/zalo_api/client.rb, line 60
def set_default_logger
  if config.logger.nil? || config.logger == true
    require 'logger'
    config.logger = Logger.new($stderr)
    config.logger.level = Logger::WARN
  end
end