class Typhoid::Resource
Attributes
path[RW]
site[RW]
resource_exception[RW]
Public Class Methods
build_request(uri, options = {})
click to toggle source
# File lib/typhoid/resource.rb, line 15 def self.build_request(uri, options = {}) Typhoid::RequestBuilder.new(self, uri, options) end
new(params = {})
click to toggle source
# File lib/typhoid/resource.rb, line 33 def initialize(params = {}) load_values(params) end
request_uri(*more_paths)
click to toggle source
Get this request URI based on site and path, can attach more paths
# File lib/typhoid/resource.rb, line 29 def self.request_uri(*more_paths) uri_join site, path, *more_paths end
run(request)
click to toggle source
# File lib/typhoid/resource.rb, line 19 def self.run(request) build(request.klass, (Request.new(request.request_uri, request.options).run)) end
uri_join(*paths)
click to toggle source
# File lib/typhoid/resource.rb, line 23 def self.uri_join(*paths) Uri.new(*paths).to_s end
Public Instance Methods
destroy()
click to toggle source
# File lib/typhoid/resource.rb, line 58 def destroy request_and_load do Request.new(delete_request.request_uri, delete_request.options).run end end
destroy!()
click to toggle source
# File lib/typhoid/resource.rb, line 46 def destroy! destroy raise resource_exception unless success? end
new_record?()
click to toggle source
# File lib/typhoid/resource.rb, line 94 def new_record? id.to_s.length < 1 end
Also aliased as: new?
persisted?()
click to toggle source
# File lib/typhoid/resource.rb, line 90 def persisted? !new_record? end
request_and_load() { || ... }
click to toggle source
# File lib/typhoid/resource.rb, line 83 def request_and_load(&block) self.resource_exception = nil response = yield self.class.load_values(self, response) success? end
request_uri()
click to toggle source
Request
URI is either in the object we retrieveed initially, built from site + path + id, or fail to the regular class#request_uri
Also, check that the server we're speaking to isn't hypermedia inclined so look at our attributes for a URI
# File lib/typhoid/resource.rb, line 79 def request_uri attributes["uri"] || (new_record? ? self.class.request_uri : self.class.request_uri(id)) end
save(method = nil)
click to toggle source
# File lib/typhoid/resource.rb, line 51 def save(method = nil) request = save_request(method) request_and_load do Request.new(request.request_uri, request.options).run end end
save!(method = nil)
click to toggle source
# File lib/typhoid/resource.rb, line 41 def save!(method = nil) save method raise resource_exception unless success? end
save_http_method(method = nil)
click to toggle source
# File lib/typhoid/resource.rb, line 69 def save_http_method(method = nil) return method if method (new_record?) ? :post : :put end
save_request(method = nil)
click to toggle source
# File lib/typhoid/resource.rb, line 64 def save_request(method = nil) method ||= save_http_method(method) (new_record?) ? create_request(method) : update_request(method) end
success?()
click to toggle source
# File lib/typhoid/resource.rb, line 37 def success? !resource_exception end
Protected Instance Methods
create_request(method = :post)
click to toggle source
# File lib/typhoid/resource.rb, line 105 def create_request(method = :post) method ||= :post Typhoid::RequestBuilder.new(self.class, request_uri, :body => to_params.to_json, :method => method, :headers => {"Content-Type" => 'application/json'}) end
delete_request(method = :delete)
click to toggle source
# File lib/typhoid/resource.rb, line 115 def delete_request(method = :delete) method ||= :delete Typhoid::RequestBuilder.new(self.class, request_uri, :method => method) end
to_params()
click to toggle source
# File lib/typhoid/resource.rb, line 101 def to_params attributes end
update_request(method = :put)
click to toggle source
# File lib/typhoid/resource.rb, line 110 def update_request(method = :put) method ||= :put Typhoid::RequestBuilder.new(self.class, request_uri, :body => to_params.to_json, :method => method, :headers => {"Content-Type" => 'application/json'}) end