module PartyMixins::ClassMethods
Contains class level method wrappers
Public Instance Methods
build_options(method_name, response)
click to toggle source
# File lib/party_mixins.rb, line 22 def build_options(method_name, response) { error_message: "[#{response.code}] #{response.body}" }.merge(party_methods[method_name]) end
party_method(options = {})
click to toggle source
# File lib/party_mixins.rb, line 14 def party_method(options = {}) @party_method_options = {}.merge(options) end
party_methods()
click to toggle source
# File lib/party_mixins.rb, line 18 def party_methods @party_methods ||= {} end
Private Instance Methods
enhance!(method_name)
click to toggle source
Calls superclass method
# File lib/party_mixins.rb, line 39 def enhance!(method_name) this = self proxy = Module.new do define_method(method_name) do |*args| response = super(*args) options = this.build_options(method_name, response) raise ServiceError.new(response, options[:error_message]) unless response.success? || response.ok? response.parsed_response end end prepend proxy end
method_added(method_name)
click to toggle source
Calls superclass method
# File lib/party_mixins.rb, line 30 def method_added(method_name) if @party_method_options party_methods[method_name] = @party_method_options enhance!(method_name) end @party_method_options = nil super end