class Moysklad::Client

Constants

URL

Attributes

client[R]

Public Class Methods

new(login: nil, password: nil, logger: nil, proxy: nil) click to toggle source
# File lib/moysklad/client.rb, line 12
def initialize login: nil, password: nil, logger: nil, proxy: nil
  @client = Faraday.new URL, proxy: proxy do |conn|
    unless logger.nil?
      conn.response :detailed_logger, logger
      conn.request :curl, logger, :info
    end
    conn.request :gzip
    conn.response :encoding

    conn.options.timeout = ENV.fetch('MOYSKLAD_HTTP_TIMEOUT', 120)
    if Faraday::VERSION.split('.').first.to_i < 2
      conn.request(:basic_auth, login, password)
    else
      conn.request(:authorization, :basic, login, password)
    end

    conn.adapter Faraday.default_adapter
  end
end

Public Instance Methods

delete(path) click to toggle source
# File lib/moysklad/client.rb, line 59
def delete path
  logger.debug "Client: DELETE #{path}"
  result = client.delete do |req|
    req.url path
    req.headers['Content-Type'] = 'application/json'
    req.headers['Accept'] = '*/*'
  end
  parse_response result
end
get(path, params={}) click to toggle source
# File lib/moysklad/client.rb, line 32
def get path, params={}
  logger.debug "Client: GET #{path} #{params}"
  parse_response client.get path, params
end
post(path, data) click to toggle source
# File lib/moysklad/client.rb, line 37
def post path, data
  logger.debug "Client: POST #{path}"
  result = client.post do |req|
    req.url path
    req.headers['Content-Type'] = 'application/json'
    req.headers['Accept'] = '*/*'
    req.body = data
  end
  parse_response result
end
put(path, data) click to toggle source
# File lib/moysklad/client.rb, line 48
def put path, data
  logger.debug "Client: PUT #{path}"
  result = client.put do |req|
    req.url path
    req.headers['Content-Type'] = 'application/json'
    req.headers['Accept'] = '*/*'
    req.body = data
  end
  parse_response result
end

Private Instance Methods

logger() click to toggle source
# File lib/moysklad/client.rb, line 73
def logger
  Moysklad.logger
end
parse_response(res) click to toggle source
# File lib/moysklad/client.rb, line 77
def parse_response res
  body = res.body
  body.force_encoding 'utf-8' if  res.body.encoding.to_s == "ASCII-8BIT" && res.headers['content-type'].include?('charset=utf-8')
  Moysklad.logger.debug "Response [#{res.status}] with body #{body}"

  if res.status == 200
    return if body.blank?
    JSON.parse body
  else
    Moysklad::Client::Errors.build res
  end
end