class Kwipper::Response

Constants

STATUSES

Attributes

body[RW]
content_type[RW]
headers[R]
redirect[RW]
request[R]
status_code[RW]
status_message[RW]

Public Class Methods

new(request) click to toggle source
# File lib/kwipper/response.rb, line 17
def initialize(request)
  @request = request
  @headers = {}.tap do |h|
    h['Set-Cookie'] = session_cookie unless has_session?
  end
  @body = ''
end

Public Instance Methods

current_session() click to toggle source
# File lib/kwipper/response.rb, line 79
def current_session
  if has_session?
    @current_session ||= Session.find request.cookies[SESSION_COOKIE_NAME]
  end
end
current_user() click to toggle source
# File lib/kwipper/response.rb, line 73
def current_user
  if current_session
    @current_user ||= User.find current_session.user_id
  end
end
has_session?() click to toggle source

Session helpers

# File lib/kwipper/response.rb, line 53
def has_session?
  request.cookies.key? SESSION_COOKIE_NAME
end
headers_for_response() click to toggle source
# File lib/kwipper/response.rb, line 38
def headers_for_response
  headers.merge({
    'Content-Length' => body.size,
    'Content-Type' => content_type
  }).tap do |h|
    h['Location'] = redirect if redirect
  end.map { |k, v| "#{k}: #{v}" }.join "\r\n"
end
info() click to toggle source
# File lib/kwipper/response.rb, line 34
def info
  "#{@status_code} #{@status_message}"
end
set_status(status) click to toggle source
# File lib/kwipper/response.rb, line 47
def set_status(status)
  @status_code, @status_message = STATUSES[status]
end
to_http_response() click to toggle source
# File lib/kwipper/response.rb, line 25
    def to_http_response
<<-HTTP
HTTP/1.1 #{status_code} #{status_message}
#{headers_for_response}

#{body}
HTTP
    end