class RestChain::Link

Attributes

name[R]
predecessor[R]

Public Class Methods

new(name, predecessor=nil, logger=nil) click to toggle source
# File lib/rest_chain/link.rb, line 5
def initialize(name, predecessor=nil, logger=nil)
  @name        = name
  @predecessor = predecessor
  @logger      = logger ? logger : log
end

Public Instance Methods

delete(parameters={}) click to toggle source
# File lib/rest_chain/link.rb, line 13
def delete(parameters={})
  dispatch(:delete, parameters)
end
dispatch(verb, parameters={}) click to toggle source
# File lib/rest_chain/link.rb, line 17
def dispatch(verb, parameters={})
  driver = HTTPDriverClassFactory.manufacture(log).new(log)
  driver.send(verb, url, parameters)
end
get(parameters={}) click to toggle source
# File lib/rest_chain/link.rb, line 22
def get(parameters={})
  dispatch(:get, parameters)
end
log() click to toggle source
# File lib/rest_chain/link.rb, line 26
def log
  if !@logger
    @logger = Logger.new(STDOUT)
    @logger.level = Logger::UNKNOWN
  end
  @logger
end
Also aliased as: logger
logger()
Alias for: log
method_missing(name, *arguments, &block) click to toggle source
# File lib/rest_chain/link.rb, line 35
def method_missing(name, *arguments, &block)
  arguments.inject(Link.new(name.to_s, self, log)) do |parent, argument|
    Link.new(argument.to_s, parent, log)
  end
end
patch(parameters={}) click to toggle source
# File lib/rest_chain/link.rb, line 41
def patch(parameters={})
  dispatch(:patch, parameters)
end
post(parameters={}) click to toggle source
# File lib/rest_chain/link.rb, line 45
def post(parameters={})
  dispatch(:post, parameters)
end
put(parameters={}) click to toggle source
# File lib/rest_chain/link.rb, line 49
def put(parameters={})
  dispatch(:put, parameters)
end
respond_to?(name, include_private=false) click to toggle source
# File lib/rest_chain/link.rb, line 53
def respond_to?(name, include_private=false)
  true
end
url() click to toggle source
# File lib/rest_chain/link.rb, line 57
def url
  base = (@predecessor ? @predecessor.url : "")
  @predecessor ? "#{base}#{base[-1,1] == '/' ? '' : '/'}#{@name}" : "/#{@name}"
end