Class: Rack::Client::Simple
- Inherits:
-
Base
- Object
- Base
- Rack::Client::Simple
show all
- Defined in:
- lib/rack/client/adapter/simple.rb
Defined Under Namespace
Classes: CollapsedResponse
Constant Summary
Constants inherited
from Base
Base::ASCII_ENCODING
Class Method Summary
collapse
Instance Method Summary
collapse
-
#build_env(request_method, url, headers = {}, body = nil) ⇒ Object
-
#http_host_for(uri) ⇒ Object
-
#http_user_agent ⇒ Object
-
#initialize(app, url = nil) ⇒ Simple
constructor
A new instance of Simple.
-
#request(method, url, headers = {}, body_or_params = nil, query_params = {}) ⇒ Object
-
#request_tuple(url, headers = {}, body_or_params = nil, query_params = {}, &block) ⇒ Object
Methods inherited from Base
#ensure_acceptable_input
Constructor Details
#initialize(app, url = nil) ⇒ Simple
Returns a new instance of Simple.
56
57
58
59
|
# File 'lib/rack/client/adapter/simple.rb', line 56
def initialize(app, url = nil)
super(app)
@base_uri = URI.parse(url) unless url.nil?
end
|
Class Method Details
.inject_middleware(app) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/rack/client/adapter/simple.rb', line 19
def self.inject_middleware(app)
middlewares = self.middlewares
Rack::Builder.app do |builder|
middlewares.each do |(middleware, args)|
builder.use middleware, *args
end
builder.run app
end
end
|
.middlewares ⇒ Object
11
12
13
|
# File 'lib/rack/client/adapter/simple.rb', line 11
def self.middlewares
@middlewares ||= []
end
|
.new(app, *a, &b) ⇒ Object
5
6
7
8
9
|
# File 'lib/rack/client/adapter/simple.rb', line 5
def self.new(app, *a, &b)
app = inject_middleware(app) if middlewares.any?
super(app, *a, &b)
end
|
.use(middleware, *args) ⇒ Object
15
16
17
|
# File 'lib/rack/client/adapter/simple.rb', line 15
def self.use(middleware, *args)
middlewares << [middleware, args]
end
|
Instance Method Details
#build_env(request_method, url, headers = {}, body = nil) ⇒ Object
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/rack/client/adapter/simple.rb', line 100
def build_env(request_method, url, = {}, body = nil)
uri = @base_uri.nil? ? URI.parse(url) : @base_uri + url
env = super(request_method, uri.to_s, , body)
env['HTTP_HOST'] ||= http_host_for(uri)
env['HTTP_USER_AGENT'] ||= http_user_agent
env
end
|
#http_host_for(uri) ⇒ Object
111
112
113
114
115
116
117
|
# File 'lib/rack/client/adapter/simple.rb', line 111
def http_host_for(uri)
if uri.to_s.include?(":#{uri.port}")
[uri.host, uri.port].join(':')
else
uri.host
end
end
|
#http_user_agent ⇒ Object
119
120
121
|
# File 'lib/rack/client/adapter/simple.rb', line 119
def http_user_agent
"rack-client #{VERSION} (app: #{@app.class})"
end
|
#request(method, url, headers = {}, body_or_params = nil, query_params = {}) ⇒ Object
77
78
79
80
81
82
83
84
|
# File 'lib/rack/client/adapter/simple.rb', line 77
def request(method, url, = {}, body_or_params = nil, query_params = {})
tuple = request_tuple(url, , body_or_params, query_params)
if block_given?
super(method, *tuple) {|*tuple| yield CollapsedResponse.new(*tuple) }
else
CollapsedResponse.new(*super(method, *tuple))
end
end
|
#request_tuple(url, headers = {}, body_or_params = nil, query_params = {}, &block) ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/rack/client/adapter/simple.rb', line 86
def request_tuple(url, = {}, body_or_params = nil, query_params = {}, &block)
query_hash = Hash === query_params ? query_params : Utils.build_query(query_params)
uri = url.is_a?(URI) ? url : URI.parse(url)
unless query_params.empty?
uri.query = Utils.build_nested_query(Utils.parse_nested_query(uri.query).merge(query_params))
end
body = Hash === body_or_params ? Utils.build_nested_query(body_or_params) : body_or_params
return uri.to_s, , body
end
|