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