class PostyClient::Resources::Base
Attributes
attributes[R]
errors[R]
name[R]
new_resource[RW]
Public Class Methods
base_uri()
click to toggle source
# File lib/posty_client/resources/base.rb, line 14 def self.base_uri URI.join(Settings.api_url, Settings.api_version) end
resource_name()
click to toggle source
# File lib/posty_client/resources/base.rb, line 127 def self.resource_name self.name.demodulize.tableize end
Public Instance Methods
attributes=(attributes)
click to toggle source
# File lib/posty_client/resources/base.rb, line 35 def attributes=(attributes) @attributes = attributes.reject {|k,v| rejected_attributes.include?(k.to_sym)} # we only want the value @name ||= @attributes[primary_key] @attributes end
base_uri()
click to toggle source
# File lib/posty_client/resources/base.rb, line 18 def base_uri self.class.base_uri end
create()
click to toggle source
# File lib/posty_client/resources/base.rb, line 91 def create logger.debug("create #{self.class.name} : #{name}") request_with_error_handling do RestClient.post(resource_slug, attributes, :content_type => :json, :accept => :json) end end
delete()
click to toggle source
# File lib/posty_client/resources/base.rb, line 98 def delete logger.debug("delete #{self.class.name} : #{name}") request_with_error_handling do RestClient.delete(slug) end end
load()
click to toggle source
# File lib/posty_client/resources/base.rb, line 41 def load @new_resource = true @attributes = {} response = begin RestClient.get(slug) rescue RestClient::Exception => e e.response end if response.code == 404 logger.debug("#{self.class.name} :: load non existing object (#{response.code}) '#{response}'") return elsif response.code != 200 logger.error("#{self.class.name} :: load failed with (#{response.code}) '#{response}'") return end @new_resource = false self.attributes = JSON.parse(response).flatten.last @name = attributes[primary_key] self end
new_resource?()
click to toggle source
# File lib/posty_client/resources/base.rb, line 31 def new_resource? @new_resource end
request_with_error_handling(&block)
click to toggle source
# File lib/posty_client/resources/base.rb, line 105 def request_with_error_handling(&block) response = begin block.call rescue RestClient::Exception => e e.response end case response.code when 200..299 true else @errors = begin JSON.parse(response)['error'] rescue => e logger.error(e) {'base' => "Unrecoverable error: #{response.code} (#{response})"} end false end end
resource_name()
click to toggle source
# File lib/posty_client/resources/base.rb, line 131 def resource_name self.class.resource_name end
resource_slug()
click to toggle source
# File lib/posty_client/resources/base.rb, line 135 def resource_slug raise NotImplementedError end
save()
click to toggle source
# File lib/posty_client/resources/base.rb, line 67 def save if new_resource? self.attributes[primary_key] = @name if create @new_resource = false return true end else if update load return true end end return false end
slug()
click to toggle source
# File lib/posty_client/resources/base.rb, line 139 def slug raise NotImplementedError end
update()
click to toggle source
# File lib/posty_client/resources/base.rb, line 84 def update logger.debug("update #{self.class.name} : #{name}") request_with_error_handling do RestClient.put(slug, attributes) end end