Sha256: 2c2d6fd7df8df779a1bca53570ef0983aecc05fa5edcc7ad07359cdbde9c0f93

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

# The Response Status class models a code and optional message. This makes up
# part of a response and provides methods for building and displaying statuses.

module Sanford; end
module Sanford::Protocol

  class ResponseStatus < Struct.new(:code_obj, :message)

    def initialize(code, message = nil)
      super(Code.new(code), message)
    end

    def code; self.code_obj.number; end
    alias_method :to_i, :code

    def code=(new_code)
      self.code_obj = Code.new(new_code)
    end

    def name; code_obj.name; end
    def to_s; code_obj.to_s; end

    def inspect
      reference = '0x0%x' % (self.object_id << 1)
      "#<#{self.class}:#{reference} @code=#{code_obj} @message=#{message.inspect}>"
    end

    class Code < Struct.new(:number, :name)
      NAMES = {
        200 => 'OK',
        400 => 'BAD REQUEST',
        404 => 'NOT FOUND',
        408 => 'TIMEOUT',
        422 => 'INVALID',
        500 => 'ERROR'
      }.freeze

      def initialize(number)
        n = number.to_i
        super(n, NAMES[n])
      end

      def to_s; "[#{[number, name].compact.join(', ')}]"; end
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sanford-protocol-0.12.0 lib/sanford-protocol/response_status.rb