module Desk::Connection

@private

Private Instance Methods

connection(raw=false) click to toggle source
# File lib/desk/connection.rb, line 12
def connection(raw=false)
  options = {
    :headers => {'Accept' => "application/#{format}", 'User-Agent' => user_agent},
    :proxy => proxy,
    :ssl => {:version => 'TLSv1_1'},
    :url => api_endpoint,
    :request => {},
  }

  options[:request][:timeout] = timeout if timeout

  Faraday.new(options) do |builder|
    builder.use Faraday::Request::MultipartWithFile
    if authenticated?
      if auth_method == Desk::Authentication::Methods::BASIC
        builder.use Faraday::Request::BasicAuthentication,basic_auth_username, basic_auth_password
      else
        builder.use Faraday::Request::OAuth, authentication
      end
    end
    builder.use Faraday::Request::Multipart
    builder.use Faraday::Request::UrlEncoded
    builder.use Faraday::Response::RaiseHttp4xx
    builder.use FaradayMiddleware::Deashify unless raw
    unless raw
      case format.to_s.downcase
      when 'json'
        builder.use Faraday::Response::ParseJson
      when 'xml'
        builder.use Faraday::Response::ParseXml
      end
    end
    builder.use Faraday::Response::RaiseHttp5xx
    builder.adapter(adapter)
    builder.response :logger, logger, :bodies => true unless logger.nil?
  end
end