class OrchestrateIo::Request

Attributes

client[R]
http_method[R]
version[R]

Public Class Methods

new(args, &block) click to toggle source
# File lib/orchestrate.io/request.rb, line 7
 def initialize(args, &block)
   @client      = args[:client]
   @http_method = args[:http_method]
   @uri         = args[:uri]
   @options     = args[:options]
   @version     = client.version

   instance_eval &block if block_given?
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
# File lib/orchestrate.io/request.rb, line 42
def method_missing(method, *args, &block)
  args = args.first
  self.class.class_eval do
    define_method method do |value|
      instance_variable_set("@#{method}", value)
    end
  end
  self.__send__(method, args)
end
parse_options(options) click to toggle source
# File lib/orchestrate.io/request.rb, line 27
def parse_options(options)
  options.each {|k,v|
    if v.is_a? Hash
      parse_options(v)
    else
      if value = instance_variable_get("@#{v}")
        options[k] = value
      else
        options.delete(k)
      end
    end
  }
  options.delete_if {|k,v| v.empty? if v.is_a? Hash }
end
perform() click to toggle source
# File lib/orchestrate.io/request.rb, line 17
def perform
  client.request(http_method, uri, parse_options(@options))
end
uri() click to toggle source
# File lib/orchestrate.io/request.rb, line 21
def uri
  @uri.split(/\//).map {|str|
    str =~ /^:/ ? instance_variable_get("@" + str.gsub!(/:/,'')) : str
  }.join("/")
end