module KayakoClient::API::ClassMethods

Public Instance Methods

all(options = {}) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 167
def all(options = {})
    raise NotImplementedError, "method not supported" unless support?(:all)
    unless configured? || (options[:api_url] && options[:api_key] && options[:secret_key])
        raise RuntimeError, "client not configured"
    end
    response = get_request(options)
    log = options[:logger] || logger
    if response.is_a?(KayakoClient::HTTPOK)
        objects = []
        if log
            log.debug "Response:"
            log.debug response.body
        end
        payload = xml_backend.new(response.body, { :logger => log })
        payload.each do |element|
            object = new(payload.to_hash(element).merge(inherited_options(options)))
            object.loaded!
            objects << object
        end
        log.info ":get(:all) successful (#{objects.size} objects)" if log
        objects
    else
        log.error "Response: #{response.status} #{response.body}" if log
        raise StandardError, "server returned #{response.status}: #{response.body}"
    end
end
api_key() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 155
def api_key
    @@api_key ||= ''
end
api_key=(key) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 151
def api_key=(key)
    @@api_key = key
end
api_url() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 147
def api_url
    @@api_url ||= ''
end
api_url=(url) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 143
def api_url=(url)
    @@api_url = url
end
create(options = {})
Alias for: post
delete(id, options = {}) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 255
def delete(id, options = {})
    raise NotImplementedError, "method not supported" unless support?(:delete)
    unless configured? || (options[:api_url] && options[:api_key] && options[:secret_key])
        raise RuntimeError, "client not configured"
    end
    response = delete_request(options.merge(:id => id))
    log = options[:logger] || logger
    if response.is_a?(KayakoClient::HTTPOK)
        log.info ":delete successful for object##{id}" if log
        true
    else
        log.error "Response: #{response.status} #{response.body}" if log
        raise StandardError, "server returned #{response.status}: #{response.body}"
        false
    end
end
Also aliased as: destroy
destroy(id, options = {})
Alias for: delete
find(*args)
Alias for: get
get(*args) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 194
def get(*args)
    options = args.last.is_a?(Hash) ? args.pop : {}
    id = args[0]
    id = :all unless id || options[:id]
    raise NotImplementedError, "method not supported" unless support?(:get)
    unless configured? || (options[:api_url] && options[:api_key] && options[:secret_key])
        raise RuntimeError, "client not configured"
    end
    log = options[:logger] || logger
    if id == :all
        return all(options)
    elsif id && id.to_i > 0
        id = id.to_i
    elsif options[:id]
        id = options[:id]
    else
        if id
            log.error "invalid :id - #{id}" if log
            raise ArgumentError, "invalid ID"
        else
            log.error "missing :id" if log
            raise ArgumentError, "missing ID"
        end
    end
    response = get_request(options.merge(:id => id))
    if response.is_a?(KayakoClient::HTTPOK)
        if log
            log.debug "Response:"
            log.debug response.body
        end
        payload = xml_backend.new(response.body, { :logger => log })
        params = payload.to_hash
        unless params.nil?
            object = new(params.merge(inherited_options(options)))
            object.loaded!
            log.info ":get(#{id}) successful" if log
            object
        else
            log.info ":get(#{id}) successful (not found)" if log
            nil
        end
    else
        log.error "Response: #{response.status} #{response.body}" if log
        raise StandardError, "server returned #{response.status}: #{response.body}"
    end
end
Also aliased as: find
post(options = {}) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 243
def post(options = {})
    raise NotImplementedError, "method not supported" unless support?(:post)
    object = new(options)
    if object.post
        object
    else
        object.has_errors? ? object.errors : nil
    end
end
Also aliased as: create
secret_key() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 163
def secret_key
    @@secret_key ||= ''
end
secret_key=(secret) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 159
def secret_key=(secret)
    @@secret_key = secret
end

Private Instance Methods

configured?() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 276
def configured?
    !api_url.empty? && !api_key.empty? && !secret_key.empty?
end