Class: ActionDispatch::Cookies::CookieJar
Overview
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Enumerable
#as_json
#encrypted, #permanent, #signed, #signed_or_encrypted
Constructor Details
#initialize(request) ⇒ CookieJar
Returns a new instance of CookieJar.
307
308
309
310
311
312
313
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 307
def initialize(request)
@set_cookies = {}
@delete_cookies = {}
@request = request
@cookies = {}
@committed = false
end
|
Instance Attribute Details
Returns the value of attribute request
305
306
307
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 305
def request
@request
end
|
Class Method Details
.build(req, cookies) ⇒ Object
299
300
301
302
303
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 299
def self.build(req, cookies)
jar = new(req)
jar.update(cookies)
jar
end
|
Instance Method Details
Returns the value of the cookie by name
, or nil
if no such cookie exists.
328
329
330
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 328
def [](name)
@cookies[name.to_s]
end
|
#[]=(name, options) ⇒ Object
Sets the cookie named name
. The second argument may be the cookie’s value or a hash of options as documented above.
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 362
def []=(name, options)
if options.is_a?(Hash)
options.symbolize_keys!
value = options[:value]
else
value = options
options = { value: value }
end
handle_options(options)
if @cookies[name.to_s] != value || options[:expires]
@cookies[name.to_s] = value
@set_cookies[name.to_s] = options
@delete_cookies.delete(name.to_s)
end
value
end
|
#clear(options = {}) ⇒ Object
Removes all cookies on the client machine by calling delete
for each cookie.
406
407
408
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 406
def clear(options = {})
@cookies.each_key { |k| delete(k, options) }
end
|
317
318
319
320
321
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 317
def commit!
@committed = true
@set_cookies.freeze
@delete_cookies.freeze
end
|
#committed? ⇒ Boolean
315
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 315
def committed?; @committed; end
|
#delete(name, options = {}) ⇒ Object
Removes the cookie on the client machine by setting the value to an empty string and the expiration date in the past. Like []=
, you can pass in an options hash to delete cookies with extra data such as a :path
.
385
386
387
388
389
390
391
392
393
394
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 385
def delete(name, options = {})
return unless @cookies.has_key? name.to_s
options.symbolize_keys!
handle_options(options)
value = @cookies.delete(name.to_s)
@delete_cookies[name.to_s] = options
value
end
|
#deleted?(name, options = {}) ⇒ Boolean
Whether the given cookie is to be deleted by this CookieJar. Like []=
, you can pass in an options hash to test if a deletion applies to a specific :path
, :domain
etc.
399
400
401
402
403
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 399
def deleted?(name, options = {})
options.symbolize_keys!
handle_options(options)
@delete_cookies[name.to_s] == options
end
|
#each(&block) ⇒ Object
323
324
325
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 323
def each(&block)
@cookies.each(&block)
end
|
#fetch(name, *args, &block) ⇒ Object
332
333
334
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 332
def fetch(name, *args, &block)
@cookies.fetch(name.to_s, *args, &block)
end
|
#key?(name) ⇒ Boolean
Also known as:
has_key?
336
337
338
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 336
def key?(name)
@cookies.key?(name.to_s)
end
|
356
357
358
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 356
def
@cookies.map { |k, v| "#{escape(k)}=#{escape(v)}" }.join "; "
end
|
#update(other_hash) ⇒ Object
344
345
346
347
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 344
def update(other_hash)
@cookies.update other_hash.stringify_keys
self
end
|
#update_cookies_from_jar ⇒ Object
349
350
351
352
353
354
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 349
def update_cookies_from_jar
request_jar = @request.cookie_jar.instance_variable_get(:@cookies)
set_cookies = request_jar.reject { |k, _| @delete_cookies.key?(k) || @set_cookies.key?(k) }
@cookies.update set_cookies if set_cookies
end
|
#write(response) ⇒ Object
410
411
412
413
414
415
416
417
418
419
420
|
# File 'actionpack/lib/action_dispatch/middleware/cookies.rb', line 410
def write(response)
@set_cookies.each do |name, value|
if write_cookie?(value)
response.set_cookie(name, value)
end
end
@delete_cookies.each do |name, value|
response.delete_cookie(name, value)
end
end
|