class Scribesend::APIResource

Public Class Methods

all(filters={}, opts={}) click to toggle source
# File lib/scribesend/api_resource.rb, line 49
def self.all(filters={}, opts={})
  response, opts = self.request(:get, url, filters, opts)
  Util.convert_to_scribesend_object(response, opts)
end
class_name() click to toggle source
# File lib/scribesend/api_resource.rb, line 3
def self.class_name
  self.name.split('::')[-1]
end
create(params={}, opts={}) click to toggle source
# File lib/scribesend/api_resource.rb, line 54
def self.create(params={}, opts={})
  response, opts = self.request(:post, url, params, opts)
  Util.convert_to_scribesend_object(response, opts)
end
request(method, url, params={}, opts={}) click to toggle source

API Methods

# File lib/scribesend/api_resource.rb, line 29
def self.request(method, url, params={}, opts={})
  headers = opts.clone
  api_key = headers.delete(:api_key)
  api_base = headers.delete(:api_base)

  response, opts = Scribesend.request(method, url, api_key, params, headers, api_base)
  [response, opts]
end
retrieve(id, opts={}) click to toggle source
# File lib/scribesend/api_resource.rb, line 43
def self.retrieve(id, opts={})
  instance = self.new(id, opts)
  instance.refresh
  instance
end
url() click to toggle source
# File lib/scribesend/api_resource.rb, line 7
def self.url
  if self == APIResource
    raise NotImplementedError.new("APIResource is an abstract class. You should perform actions on its subclasses (Account, Entry, etc.)")
  end
  if (self.class_name[-1..-1] == 's' || self.class_name[-1..-1] == 'h')
    return "/#{CGI.escape(self.class_name.downcase)}es"
  elsif (self.class_name[-1..-1] == 'y')
    return "/#{CGI.escape(self.class_name.downcase[0..-2])}ies"
  else
    return "/#{CGI.escape(class_name.downcase)}s"
  end
end

Public Instance Methods

refresh() click to toggle source
# File lib/scribesend/api_resource.rb, line 38
def refresh
  response, opts = self.class.request(:get, url, @retrieve_params)
  refresh_from(response, opts)
end
save(params={}) click to toggle source

def delete(params={}, opts={})

response, opts = self.class.request(:delete, url, params, opts)
refresh_from(response, opts)
self

end

# File lib/scribesend/api_resource.rb, line 65
def save(params={})
  values = self.class.serialize_params(self).merge(params)

  if values.length > 0
    values.delete(:id)

    response, opts = self.class.request(:post, url, values)
    refresh_from(response, opts)
  end
  self
end
url() click to toggle source
# File lib/scribesend/api_resource.rb, line 20
def url
  unless id = self['id']
    raise Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{id.inspect}", "id")
  end
  "#{self.class.url}/#{CGI.escape(id)}"
end