Harbor Documentation

Harbor::JsonCookies

Middleware for storing data in a cookie using JSON, for later access via javascript.

  use Harbor::JsonCookies, "key_to_serialize", "other_key"

Public Class Methods

new(app, keys = [])

      # File lib/harbor/json_cookies.rb, line 9
 9:     def initialize(app, keys = [])
10:       @app = app
11:       @keys = keys
12:     end

Public Instance Methods

call(env)

      # File lib/harbor/json_cookies.rb, line 14
14:     def call(env)
15:       read_cookies(env)
16:       status, headers, body = @app.call(env)
17:       write_cookies(env, status, headers, body)
18:     end

Private Instance Methods

read_cookies(env)

      # File lib/harbor/json_cookies.rb, line 22
22:     def read_cookies(env)
23:       request = Rack::Request.new(env)
24:       (request.cookies.keys & @keys).each do |key|
25:         env[key] = JSON.parse(request.cookies[key]) rescue nil
26:       end
27:     end

write_cookies(env, status, headers, body)

      # File lib/harbor/json_cookies.rb, line 29
29:     def write_cookies(env, status, headers, body)
30:       response = Rack::Response.new(body, status, headers)
31:       @keys.each do |key|
32:         response.set_cookie(key, :value => env[key].to_json, :path => "/")
33:       end
34:       response.to_a
35:     end