class Saasu::Base
Attributes
attributes[R]
Public Class Methods
all()
click to toggle source
# File lib/saasu/base.rb, line 9 def self.all validate_method_is_implemented_in_saasu_api(:index) Saasu::Client.request(:get, resource_url.pluralize).values.first.map do |record| self.new(record) end end
create(params)
click to toggle source
# File lib/saasu/base.rb, line 78 def self.create(params) validate_method_is_implemented_in_saasu_api(:create) id = Saasu::Client.request(:post, resource_url, params).values.first new(Saasu::Client.request(:get, resource_url(id))) end
delete(id)
click to toggle source
# File lib/saasu/base.rb, line 49 def self.delete(id) validate_method_is_implemented_in_saasu_api(:destroy) Saasu::Client.request(:delete, resource_url(id)) end
find(id)
click to toggle source
# File lib/saasu/base.rb, line 17 def self.find(id) validate_method_is_implemented_in_saasu_api(:show) response = Saasu::Client.request(:get, resource_url(id)) if response.present? self.new(response) else response.body end end
new(params = {})
click to toggle source
# File lib/saasu/base.rb, line 5 def initialize(params = {}) @attributes = params.deep_stringify_keys end
validate_method_is_implemented_in_saasu_api(method_name)
click to toggle source
# File lib/saasu/base.rb, line 89 def self.validate_method_is_implemented_in_saasu_api(method_name) raise "This method is not currently supported by Saasu API" unless @api_methods.include?(method_name) end
where(params)
click to toggle source
# File lib/saasu/base.rb, line 29 def self.where(params) validate_method_is_implemented_in_saasu_api(:index) validate_filters(params) Saasu::Client.request(:get, resource_url.pluralize, params).values.first.map do |record| self.new(record) end end
Protected Class Methods
allowed_methods(*params)
click to toggle source
# File lib/saasu/base.rb, line 128 def self.allowed_methods(*params) @api_methods = params end
filter_by(params)
click to toggle source
# File lib/saasu/base.rb, line 132 def self.filter_by(params) @filters = params end
resource_url(id = nil)
click to toggle source
# File lib/saasu/base.rb, line 136 def self.resource_url(id = nil) [name.demodulize.downcase, id].compact.join('/') end
validate_filters(params)
click to toggle source
# File lib/saasu/base.rb, line 140 def self.validate_filters(params) params.keys.each do |key| raise "Filter not supported by Saasu API: #{key}. Supported filters: #{@filters.join(", ")}" unless key.to_s.in?(@filters) end end
Public Instance Methods
[](key)
click to toggle source
# File lib/saasu/base.rb, line 93 def [](key) @attributes[key.to_s] end
[]=(key, value)
click to toggle source
# File lib/saasu/base.rb, line 97 def []=(key, value) @attributes[key.to_s] = value end
delete()
click to toggle source
# File lib/saasu/base.rb, line 38 def delete validate_method_is_implemented_in_saasu_api(:destroy) if Saasu::Client.request(:delete, self.class.resource_url(id))["StatusMessage"] == "Ok" self['Id'] = nil true else false end end
id()
click to toggle source
# File lib/saasu/base.rb, line 115 def id @attributes['Id'] end
method_missing(meth, *args, &cb)
click to toggle source
Calls superclass method
# File lib/saasu/base.rb, line 101 def method_missing meth, *args, &cb if meth.in?(getter_methods) @attributes[meth.to_s.classify] elsif meth.in?(setter_methods) @attributes[meth.to_s.gsub('=','').classify] = args.flatten.compact.first else super meth, *args, &cb end end
save()
click to toggle source
# File lib/saasu/base.rb, line 55 def save if self.id.present? validate_method_is_implemented_in_saasu_api(:update) Saasu::Client.request(:put, self.class.resource_url(id), @attributes) else validate_method_is_implemented_in_saasu_api(:create) self['Id'] = Saasu::Client.request(:post, self.class.resource_url, @attributes).values.first end @attributes = Saasu::Client.request(:get, self.class.resource_url(id)) true end
to_s()
click to toggle source
# File lib/saasu/base.rb, line 111 def to_s "#{self.class.name.demodulize} ##{self.id}" end
update(params)
click to toggle source
# File lib/saasu/base.rb, line 68 def update(params) validate_method_is_implemented_in_saasu_api(:update) params.each do |key, value| self[key] = value end save end
validate_method_is_implemented_in_saasu_api(method_name)
click to toggle source
# File lib/saasu/base.rb, line 85 def validate_method_is_implemented_in_saasu_api(method_name) self.class.validate_method_is_implemented_in_saasu_api(method_name) end
Protected Instance Methods
getter_methods()
click to toggle source
# File lib/saasu/base.rb, line 120 def getter_methods @attributes.keys.map { |k| k.underscore.to_sym } end
setter_methods()
click to toggle source
# File lib/saasu/base.rb, line 124 def setter_methods @attributes.keys.map { |k| "#{k.underscore}=".to_sym } end