Sha256: 61a838e322f6095c309b74a3434e61de87d1137ae6d6fa5e4123aa8e73a954a8

Contents?: true

Size: 1007 Bytes

Versions: 2

Compression:

Stored size: 1007 Bytes

Contents

module CookieMonster
  class Jar < Base
    attr_reader :request, :response

    def initialize(options)
      @request = options.delete(:request)
      @response = options.delete(:response)
      @options = options
    end

    def [](key)
      key = key.to_s

      if @response.cookies[key]
        cookie = @response.cookies[key]
      elsif @request.cookies[key]
        cookie = @request.cookies[key]
      else
        return nil
      end

      if cookie.is_a? Hash
        cookie = cookie[:value]
      end

      encrypted = Encryption.new(cookie)
      encrypted.decrypt
    end

    def []=(key, value)
      encrypted_value = Encryption.new(value).encrypt

      @response.set_cookie key, {
        :value => encrypted_value,
        :httponly => @options[:httponly],
        :expires => @options[:expires],
        :domain => @options[:domain],
        :path => @options[:path] || '/',
        :secure => false # Needed so it can be read by cookie logger over http
      }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cookie_monster-0.0.1 lib/cookie_monster/jar.rb
cookie_monster-0.0.0 lib/cookie_monster/jar.rb