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