class LemonWay::Client

Constants

DEFAULT_HEADERS
DEFAULT_LANGUAGE
DIRECTKIT_URL
REQUIRED_CONFIGURATION

Attributes

company[R]
env[R]
login[R]
options[R]
password[R]
society_wallet_id[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/lemon_way/client.rb, line 28
def initialize(options = {})
  if (options.keys & REQUIRED_CONFIGURATION).size != REQUIRED_CONFIGURATION.size
    raise MissingConfigurationError.new
  end

  %i[login password company society_wallet_id].each do |key|
    instance_variable_set("@#{key}".to_sym, options.delete(key))
  end

  @env = options[:sandbox] ? 'dev' : 'prod'
  @options = options
end

Public Instance Methods

send_request(lw_method, version, params = {}) click to toggle source
# File lib/lemon_way/client.rb, line 41
def send_request(lw_method, version, params = {})
  response = perform_request(lw_method, version, params)

  ResponseAdapter.new(response)
end

Private Instance Methods

directkit_url() click to toggle source
# File lib/lemon_way/client.rb, line 55
def directkit_url
  DIRECTKIT_URL
    .sub('{company_name}', @company)
    .sub('{env}', @env)
end
perform_request(lw_method, version, params) click to toggle source
# File lib/lemon_way/client.rb, line 49
def perform_request(lw_method, version, params)
  self.class.post([directkit_url, lw_method].join('/'),
                  headers: DEFAULT_HEADERS,
                  body: { p: request_body(version, params) }.to_json)
end
request_body(version, params) click to toggle source
# File lib/lemon_way/client.rb, line 61
def request_body(version, params)
  {
    wlLogin: @login,
    wlPass: @password,
    language: @options[:language] || DEFAULT_LANGUAGE,
    version: version,
    walletIp: @options[:sandbox] ? '127.0.0.1' : RequestStore[:lemon_way][:ip],
    walletUa: @options[:sandbox] ? 'User-agent' : RequestStore[:lemon_way][:user_agent]
  }.merge(params)
end