class Emailvision::Relation

Relation is used for API-chained call

e.g. emv.get.campaign.last(:limit => 5).call

Public Class Methods

new(instance, request) click to toggle source
# File lib/emailvision/relation.rb, line 9
def initialize(instance, request)
  @instance = instance
  @request = request
  @uri = []
  @options = {}
end

Public Instance Methods

call(*args) click to toggle source

Trigger the API call

@param [Object] parameters @return [Object] data returned from Emailvision

# File lib/emailvision/relation.rb, line 21
def call(*args)
  @options.merge! extract_args(args)
  @request.prepare(@uri.join('/'), @options)
  @instance.call(@request)
end
method_missing(method, *args) click to toggle source
# File lib/emailvision/relation.rb, line 27
def method_missing(method, *args)
  @uri << method.to_s.camelize(:lower)
  @options.merge! extract_args(args)
  self
end

Private Instance Methods

extract_args(args) click to toggle source
# File lib/emailvision/relation.rb, line 35
def extract_args(args)
  (args[0] and args[0].kind_of? Hash) ? args[0] : {}
end