Sha256: f6f9aa569d2c709c0fee5adb2d28e7c1a5acbe9510ff4cce75b010f1e77240df
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
# encoding: utf-8 require 'forwardable' module Hatetepe class Serializer REQUEST_LINE = "%s %s HTTP/%.1f\r\n".freeze RESPONSE_LINE = "HTTP/%.1f %d %s\r\n".freeze HEADER = "%s: %s\r\n".freeze CRLF = "\r\n".freeze include Encoding extend Forwardable def_delegator :@message, :headers def_delegator :@message, :body def initialize(message, writer) @message = message @writer = writer end def serialize setup_body write(banana_line) write(header_block) write_body end private def write(*data) data.each { |str| @writer.call(str) } end def banana_line if Request === @message request_line else response_line end end def request_line sprintf(REQUEST_LINE, @message.http_method.upcase, @message.uri, @message.http_version) end def response_line sprintf(RESPONSE_LINE, @message.http_version, @message.status, @message.status_name) end def header_block headers.reduce('') { |a, e| a << sprintf(HEADER, *e) } + CRLF end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hatetepe-0.6.0.pre.1 | lib/hatetepe/serializer.rb |