class KayakoClient::NetHTTP

Public Class Methods

new(options = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 22
def initialize(options = {})
    @client = Net::HTTP::Proxy(options[:host], options[:port], options[:user], options[:pass])
    @logger = options[:logger] if options[:logger]
end

Public Instance Methods

delete(base, params = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 76
def delete(base, params = {})
    uri = URI.parse(base)
    log = params.delete(:logger) || logger
    session = @client.new(uri.host, uri.port)
    session.use_ssl = true if uri.is_a?(URI::HTTPS)
    resp = session.start do |request|
        query = url(uri.path, params)
        log.debug ":delete => #{query}" if log
        request.delete(query)
    end
    response(resp)
end
get(base, params = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 27
def get(base, params = {})
    uri = URI.parse(base)
    log = params.delete(:logger) || logger
    session = @client.new(uri.host, uri.port)
    session.use_ssl = true if uri.is_a?(URI::HTTPS)
    resp = session.start do |request|
        query = url(uri.path, params)
        log.debug ":get => #{query}" if log
        request.get(query)
    end
    response(resp)
end
post(base, params = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 58
def post(base, params = {})
    uri = URI.parse(base)
    e = params.delete(:e)
    log = params.delete(:logger) || logger
    session = @client.new(uri.host, uri.port)
    session.use_ssl = true if uri.is_a?(URI::HTTPS)
    resp = session.start do |request|
        query = url(uri.path, { :e => e })
        data = form_data(params)
        if log
            log.debug ":post => #{query}"
            log.debug "POST Data: #{data}"
        end
        request.post(query, data, 'Content-Type' => 'application/x-www-form-urlencoded')
    end
    response(resp)
end
put(base, params = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 40
def put(base, params = {})
    uri = URI.parse(base)
    e = params.delete(:e)
    log = params.delete(:logger) || logger
    session = @client.new(uri.host, uri.port)
    session.use_ssl = true if uri.is_a?(URI::HTTPS)
    resp = session.start do |request|
        query = url(uri.path, { :e => e })
        data = form_data(params)
        if log
            log.debug ":put => #{query}"
            log.debug "PUT Data: #{data}"
        end
        request.put(query, data, 'Content-Type' => 'application/x-www-form-urlencoded')
    end
    response(resp)
end
response(resp) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 89
def response(resp)
    case resp
    when Net::HTTPOK
        KayakoClient::HTTPOK.new(resp.body)
    when Net::HTTPBadRequest
        KayakoClient::HTTPBadRequest.new(resp.body)
    when Net::HTTPUnauthorized
        KayakoClient::HTTPUnauthorized.new(resp.body)
    when Net::HTTPForbidden
        KayakoClient::HTTPForbidden.new(resp.body)
    when Net::HTTPNotFound
        KayakoClient::HTTPNotFound.new(resp.body)
    when Net::HTTPMethodNotAllowed
        KayakoClient::HTTPNotAllowed.new(resp.body)
    else
        KayakoClient::HTTPResponse.new(resp.code, resp.body)
    end
end

Private Instance Methods

form_data(params = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 118
def form_data(params = {})
    params.collect { |name, value|
        value.is_a?(Array) ?
            value.collect { |item| urlencode(name.to_s) + '[]=' + urlencode(item.to_s) } :
            urlencode(name.to_s) + '=' + urlencode(value.to_s)
    }.join('&')
end
url(base, params = {}) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 114
def url(base, params = {})
    base + '?' + params.collect { |name, value| urlencode(name.to_s) + '=' + urlencode(value.to_s) }.join('&')
end
urlencode(string) click to toggle source
# File lib/kayako_client/http/net_http.rb, line 110
def urlencode(string)
    URI.escape(string, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end