Class: RestChain::Link
- Inherits:
-
Object
show all
- Defined in:
- lib/rest_chain/link.rb
Direct Known Subclasses
Chain
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name, predecessor = nil, logger = nil) ⇒ Link
Returns a new instance of Link.
5
6
7
8
9
|
# File 'lib/rest_chain/link.rb', line 5
def initialize(name, predecessor=nil, logger=nil)
@name = name
@predecessor = predecessor
@logger = logger ? logger : log
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *arguments, &block) ⇒ Object
35
36
37
38
39
|
# 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
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
11
12
13
|
# File 'lib/rest_chain/link.rb', line 11
def name
@name
end
|
#predecessor ⇒ Object
Returns the value of attribute predecessor.
11
12
13
|
# File 'lib/rest_chain/link.rb', line 11
def predecessor
@predecessor
end
|
Instance Method Details
#delete(parameters = {}) ⇒ Object
13
14
15
|
# File 'lib/rest_chain/link.rb', line 13
def delete(parameters={})
dispatch(:delete, parameters)
end
|
#dispatch(verb, parameters = {}) ⇒ Object
17
18
19
20
|
# 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 = {}) ⇒ Object
22
23
24
|
# File 'lib/rest_chain/link.rb', line 22
def get(parameters={})
dispatch(:get, parameters)
end
|
#log ⇒ Object
Also known as:
logger
26
27
28
29
30
31
32
|
# File 'lib/rest_chain/link.rb', line 26
def log
if !@logger
@logger = Logger.new(STDOUT)
@logger.level = Logger::UNKNOWN
end
@logger
end
|
#patch(parameters = {}) ⇒ Object
41
42
43
|
# File 'lib/rest_chain/link.rb', line 41
def patch(parameters={})
dispatch(:patch, parameters)
end
|
#post(parameters = {}) ⇒ Object
45
46
47
|
# File 'lib/rest_chain/link.rb', line 45
def post(parameters={})
dispatch(:post, parameters)
end
|
#put(parameters = {}) ⇒ Object
49
50
51
|
# File 'lib/rest_chain/link.rb', line 49
def put(parameters={})
dispatch(:put, parameters)
end
|
#respond_to?(name, include_private = false) ⇒ Boolean
53
54
55
|
# File 'lib/rest_chain/link.rb', line 53
def respond_to?(name, include_private=false)
true
end
|
#url ⇒ Object
57
58
59
60
|
# File 'lib/rest_chain/link.rb', line 57
def url
base = (@predecessor ? @predecessor.url : "")
@predecessor ? "#{base}#{base[-1,1] == '/' ? '' : '/'}#{@name}" : "/#{@name}"
end
|