class SBF::Client::TopLevelEntity
Constants
- DEFAULT_CLASS_ACTIONS
- DEFAULT_CRUD_ACTIONS
- DEFAULT_ENDPOINT
- DEFAULT_INSTANCE_ACTIONS
Public Class Methods
_endpoint()
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 28 def _endpoint DEFAULT_ENDPOINT.new(self) end
action(name)
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 60 def action(name) instance_action(name) if %i(save create).include?(name) if name == :update define_method(name) do |*args| result = endpoint.update(id, self, *args) result unless result.is_a?(SBF::Client::TopLevelEntity) result.errors? ? false : result end end if name == :delete define_method(:delete) do |*_args| response = endpoint.delete(id) if response.error? add_errors(response.error) errors.instance_variable_set(:@http_code, response.http_code) false else @destroyed = true freeze end end end class_action(name) end
actions(actions)
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 40 def actions(actions) actions.each { |m| action(m) } end
blacklist_action(name)
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 88 def blacklist_action(name) define_method(name) do |*_| raise NoMethodError.new("#{name} is blacklisted", name) end singleton_class.class_eval do define_method(name) do |*_| raise NoMethodError.new("#{name} is blacklisted", name) end end end
class_action(name)
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 52 def class_action(name) singleton_class.class_eval do define_method(name) do |*args| endpoint.send(name, *args) end end end
define_endpoint(mod, options)
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 32 def define_endpoint(mod, options) singleton_class.class_eval do define_method(:_endpoint) do @_endpoint ||= mod.new(options.fetch(:target_class, self)) end end end
endpoint(mod = nil, options = {})
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 22 def endpoint(mod = nil, options = {}) return define_endpoint(mod, options) if mod _endpoint end
instance_action(name)
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 44 def instance_action(name) define_method(name) do |*args| result = endpoint.send(name, self, *args) result unless result.is_a?(SBF::Client::TopLevelEntity) %i(save create).include?(name) && result.errors? ? false : result end end
Public Instance Methods
endpoint()
click to toggle source
# File lib/stbaldricks/entities/lib/top_level.rb, line 107 def endpoint self.class.endpoint end