Sha256: 3329e9c3aee3c2e134b5c86c104b3438a60c70c190ecddd68a6700bfe3e21a40

Contents?: true

Size: 1022 Bytes

Versions: 2

Compression:

Stored size: 1022 Bytes

Contents

require 'forwardable'
require 'rack/contrib/cookies'

module NYNY
  class RequestScope
    extend Forwardable

    attr_reader :request, :response
    def_delegators :request, :params, :session
    def_delegators :response, :headers

    def initialize request
      @request  = request
      @response = Response.new [], 200, {'Content-Type' => 'text/html'}
    end

    def cookies
      @cookies ||= Rack::Cookies::CookieJar.new(request.cookies)
    end

    def status code
      response.status = code
    end

    def halt status, headers={}, body=''
      response.status = status
      response.headers.merge! headers
      response.rewrite body
      cookies.finish!(response) if @cookies
      throw :halt, response.finish
    end

    def redirect_to uri, status=302
      halt status, {'Location' => uri}
    end
    alias_method :redirect, :redirect_to

    def apply_to &handler
      response.write instance_eval(&handler)
      cookies.finish!(response) if @cookies
      response.finish
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nyny-3.2.1 lib/nyny/request_scope.rb
nyny-3.2.0 lib/nyny/request_scope.rb