/
restfulie.rb
47 lines (39 loc) · 1.06 KB
/
restfulie.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__))
require 'restfulie/version'
require 'restfulie/common'
require 'restfulie/client'
require 'restfulie/server'
class RestfulieDslBuilder
def initialize
@traits = [Restfulie::Client::Feature::Nil.new]
end
def method_missing(sym, *args)
trait = "Restfulie::Client::Feature::#{sym.to_s.classify}".constantize
@traits << trait
self.extend trait
self
end
end
# Shortcut to Restfulie::Client::EntryPoint
module Restfulie
# creates a new entry point for executing requests
def self.at(uri)
Restfulie.using {
recipe
follow_link
request_marshaller
verb_request
}.at(uri)
end
def self.using(&block)
RestfulieUsing.new.instance_eval(&block)
end
def self.use(&block)
RestfulieDslBuilder.new.instance_eval(&block)
end
end
class RestfulieUsing
def method_missing(sym, *args)
@current = "Restfulie::Client::HTTP::#{sym.to_s.classify}".constantize.new(@current || Restfulie::Client::HTTP::RequestAdapter.new, *args)
end
end