module KayakoClient::API

Public Class Methods

included(base) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 18
def self.included(base)
    base.extend(ClassMethods)
end

Public Instance Methods

api_key() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 34
def api_key
    @api_key ||= self.class.api_key
end
api_key=(key) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 30
def api_key=(key)
    @api_key = key
end
api_url() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 26
def api_url
    @api_url ||= self.class.api_url
end
api_url=(url) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 22
def api_url=(url)
    @api_url = url
end
delete() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 122
def delete
    raise NotImplementedError, "method not supported" unless self.class.support?(:delete)
    raise RuntimeError, "client not configured" unless configured?
    unless new?
        response = delete_request
        if response.is_a?(KayakoClient::HTTPOK)
            logger.info ":delete successful for object##{id}" if logger
        else
            logger.error "Response: #{response.status} #{response.body}" if logger
            raise StandardError, "server returned #{response.status}: #{response.body}"
        end
    else
        logger.warn "cannot delete new object" if logger
        raise StandardError, "cannot delete new object"
    end
end
Also aliased as: destroy
destroy()
Alias for: delete
post() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 84
def post
    raise NotImplementedError, "method not supported" unless self.class.support?(:post)
    raise RuntimeError, "client not configured" unless configured?
    if id
        logger.warn "Object has :id - calling :put instead" if logger
        return put
    end
    raise RuntimeError, "object cannot be saved" unless new?
    params = changes.inject({}) do |hash, property|
        hash[property] = instance_variable_get("@#{property}")
        hash
    end
    require_properties(:post, params)
    validate(:post, params)
    check_conditions(params)
    response = post_request(params)
    if response.is_a?(KayakoClient::HTTPOK)
        if logger
            logger.debug "Response:"
            logger.debug response.body
        end
        payload = xml_backend.new(response.body, { :logger => logger })
        clean
        import(payload.to_hash)
        loaded!
        logger.info ":post successful" if logger
        true
    else
        unless response.is_a?(Hash)
            logger.error "Response: #{response.status} #{response.body}" if logger
            raise StandardError, "server returned #{response.status}: #{response.body}"
        end
        false
    end
end
Also aliased as: save
put() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 46
def put
    raise NotImplementedError, "method not supported" unless self.class.support?(:put)
    raise RuntimeError, "client not configured" unless configured?
    if changed?
        params = changes.inject({}) do |hash, property|
            hash[property] = instance_variable_get("@#{property}")
            hash
        end
        require_properties(:put, params)
        validate(:put, params)
        check_conditions(params)
        response = put_request(params)
        if response.is_a?(KayakoClient::HTTPOK)
            if logger
                logger.debug "Response:"
                logger.debug response.body
            end
            payload = xml_backend.new(response.body, { :logger => logger })
            clean
            import(payload.to_hash)
            loaded!
            logger.info ":put successful for object##{id}" if logger
            true
        else
            unless response.is_a?(Hash)
                logger.error "Response: #{response.status} #{response.body}" if logger
                raise StandardError, "server returned #{response.status}: #{response.body}"
            end
            false
        end
    else
        logger.warn "nothing to :put" if logger
        true
    end
end
Also aliased as: update
save()
Alias for: post
secret_key() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 42
def secret_key
    @secret_key ||= self.class.secret_key
end
secret_key=(secret) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 38
def secret_key=(secret)
    @secret_key = secret
end
update()
Alias for: put

Private Instance Methods

configured?() click to toggle source
# File lib/kayako_client/mixins/api.rb, line 284
def configured?
    !api_url.empty? && !api_key.empty? && !secret_key.empty?
end
reload!(options = {}) click to toggle source
# File lib/kayako_client/mixins/api.rb, line 288
def reload!(options = {})
    raise NotImplementedError, "method not supported" unless self.class.support?(:get)
    raise RuntimeError, "client not configured" unless configured?
    raise RuntimeError, "cannot reload modified object" if changed?
    raise RuntimeError, "object not saved yet" unless id && !new?
    response = self.class.get_request(options.merge(:id => id))
    if response.is_a?(KayakoClient::HTTPOK)
        if logger
            logger.debug "Response:"
            logger.debug response.body
        end
        payload = xml_backend.new(response.body, { :logger => logger })
        clean
        import(payload.to_hash)
        loaded!
        logger.info ":get(#{id}) successful" if logger
        true
    else
        logger.error "Response: #{response.status} #{response.body}" if logger
        raise StandardError, "server returned #{response.status}: #{response.body}"
        false
    end
end