class Gack::Response

Build a Gemini response

Constants

BodyNotAllowedError
InvalidMimeError
InvalidStatusCodeError
META_MAX_BYTES
MIME
MetaTooLongError

Attributes

body[R]
meta[R]
status_code[R]

Public Class Methods

new(status_code, meta = nil, body = nil) click to toggle source
# File lib/gack/response.rb, line 21
def initialize(status_code, meta = nil, body = nil)
  @status_code = Integer(status_code)

  raise InvalidStatusCodeError unless StatusCodes::VALID_CODES.include?(@status_code)

  @meta = meta

  raise MetaTooLongError if @meta && @meta.bytesize > META_MAX_BYTES
  raise InvalidMimeError if @status_code == StatusCodes::SUCCESS && @meta.nil?

  @body = body

  raise BodyNotAllowedError if @body && @status_code != StatusCodes::SUCCESS
end

Public Instance Methods

finalize() click to toggle source
# File lib/gack/response.rb, line 36
def finalize
  return "#{status_code}\r\n" unless meta

  "#{status_code} #{meta}\r\n#{body}"
end