Sha256: efaa9b3cb3dec03b0995a4da63d56c2597f2e59f63ce0885330cc093dac373bb

Contents?: true

Size: 741 Bytes

Versions: 1

Compression:

Stored size: 741 Bytes

Contents

require "json"

module Split
  module Persistence
    class CookieAdapter

      EXPIRES = Time.now + 31536000 # One year from now

      def initialize(context)
        @cookies = context.send(:cookies)
      end

      def [](key)
        hash[key]
      end

      def []=(key, value)
        set_cookie(hash.merge(key => value))
      end

      def delete(key)
        set_cookie(hash.tap { |h| h.delete(key) })
      end

      def keys
        hash.keys
      end

      private

      def set_cookie(value)
        @cookies[:split] = {
          :value => JSON.generate(value),
          :expires => EXPIRES
        }
      end

      def hash
        @cookies[:split] ? JSON.parse(@cookies[:split]) : {}
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
split-0.5.0 lib/split/persistence/cookie_adapter.rb