class Desk::Connection

Public Class Methods

new(opts={}) click to toggle source
# File lib/desk/connection.rb, line 7
def initialize(opts={})
  @site = opts[:site]
  connection
  use_basic_auth(opts) if opts[:email] && opts[:password]
  use_oauth(opts) if opts[:consumer_key] &&
                     opts[:consumer_secret] &&
                     opts[:token] &&
                     opts[:token_secret]
end

Public Instance Methods

delete(*opts) click to toggle source
# File lib/desk/connection.rb, line 29
def delete(*opts)
  result = @connection.delete(*opts)

  result.status == 204
end
get(*opts) click to toggle source
# File lib/desk/connection.rb, line 17
def get(*opts)
  @connection.get(*stringify_arrays(*opts)).body
end
patch(*opts) click to toggle source
# File lib/desk/connection.rb, line 25
def patch(*opts)
  @connection.patch(*opts).body
end
post(*opts) click to toggle source
# File lib/desk/connection.rb, line 21
def post(*opts)
  @connection.post(*opts).body
end

Private Instance Methods

base_url() click to toggle source
# File lib/desk/connection.rb, line 61
def base_url
  "https://#{@site}.desk.com/api/v2/"
end
connection() click to toggle source
# File lib/desk/connection.rb, line 37
def connection
  @connection ||= Faraday.new(base_url, ssl: { verify: true } ) do |conn|
    conn.use Desk::Response::ErrorHandling
    conn.use FaradayMiddleware::ParseJson
    conn.headers = {'Content-Type' => 'application/json', 'Accept' => 'application/json' }
    conn.request :json
    conn.use Faraday::Adapter::NetHttp
  end
  @connection
end
stringify_arrays(*opts) click to toggle source
# File lib/desk/connection.rb, line 65
def stringify_arrays(*opts)
  opts.collect do |opt|
    opt.is_a?(Hash) ? opt.each {|k,v| opt[k] = v.is_a?(Array) ? v.join(",") : v} : opt
  end
end
use_basic_auth(opts) click to toggle source
# File lib/desk/connection.rb, line 48
def use_basic_auth(opts)
  @connection.builder.insert(1, Faraday::Request::BasicAuthentication, opts[:email], opts[:password])
end
use_oauth(opts) click to toggle source
# File lib/desk/connection.rb, line 52
def use_oauth(opts)
  @connection.builder.insert(1, FaradayMiddleware::OAuth, {
                      :consumer_key => opts[:consumer_key],
                      :consumer_secret => opts[:consumer_secret],
                      :token => opts[:token],
                      :token_secret => opts[:token_secret]
                    } )
end