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