Class: Rack::Client::CookieJar::Context
- Inherits:
-
Object
- Object
- Rack::Client::CookieJar::Context
show all
- Includes:
- Options, DualBand
- Defined in:
- lib/rack/client/middleware/cookie_jar/context.rb
Instance Method Summary
collapse
Methods included from DualBand
#call
Methods included from Options
#initialize_options, option_accessor, option_name, #options, #options=
Constructor Details
#initialize(app, options = {}) ⇒ Context
Returns a new instance of Context.
8
9
10
11
12
|
# File 'lib/rack/client/middleware/cookie_jar/context.rb', line 8
def initialize(app, options = {})
@app = app
initialize_options options
end
|
Instance Method Details
#async_call(env) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/rack/client/middleware/cookie_jar/context.rb', line 27
def async_call(env)
request = Request.new(env)
cookies = lookup(request)
request.inject(cookies)
@app.call(request.env) do |request_parts|
response = Response.new(*request_parts)
cookies = Cookie.merge(cookies, response.cookies)
store cookies
response['rack-client-cookiejar.cookies'] = cookies.map {|c| c. } * ', ' unless cookies.empty?
yield response.finish
end
end
|
#cookiestore ⇒ Object
52
53
54
55
|
# File 'lib/rack/client/middleware/cookie_jar/context.rb', line 52
def cookiestore
uri = options['rack-client-cookiejar.cookiestore']
storage.resolve_cookiestore_uri(uri)
end
|
#lookup(request) ⇒ Object
42
43
44
|
# File 'lib/rack/client/middleware/cookie_jar/context.rb', line 42
def lookup(request)
cookiestore.match(request.host, request.path)
end
|
#store(cookies) ⇒ Object
46
47
48
49
50
|
# File 'lib/rack/client/middleware/cookie_jar/context.rb', line 46
def store(cookies)
cookies.each do |cookie|
cookiestore.store(cookie)
end
end
|
#sync_call(env) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/rack/client/middleware/cookie_jar/context.rb', line 14
def sync_call(env)
request = Request.new(env)
cookies = lookup(request)
request.inject(cookies)
response = Response.new(*@app.call(request.env))
cookies = Cookie.merge(cookies, response.cookies)
store cookies
response['rack-client-cookiejar.cookies'] = cookies.map {|c| c. } * ', ' unless cookies.empty?
response.finish
end
|