Sha256: f01b2a10db93f4b76070d7243fe25ec50d306e2d358a80a62ee2305af3b10994

Contents?: true

Size: 970 Bytes

Versions: 2

Compression:

Stored size: 970 Bytes

Contents

# The Request class models a specific type of Sanford message body and provides
# a defined structure for it. A request requires a message body to contain a
# version, name and params.

module Sanford::Protocol

  class Request < Struct.new(:version, :name, :params)

    def self.parse(body)
      self.new(body['version'], body['name'], body['params'])
    end

    def to_hash
      { 'version' => version,
        'name'    => name,
        'params'  => params
      }
    end

    def to_s; "[#{version}] #{name}"; end

    def valid?
      if !version
        [ false, "The request doesn't contain a version." ]
      elsif !name
        [ false, "The request doesn't contain a name." ]
      else
        [ true ]
      end
    end

    def inspect
      reference = '0x0%x' % (self.object_id << 1)
      "#<#{self.class}:#{reference}"\
      " @version=#{version.inspect}"\
      " @name=#{name.inspect}"\
      " @params=#{params.inspect}>"
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sanford-protocol-0.4.0 lib/sanford-protocol/request.rb
sanford-protocol-0.3.0 lib/sanford-protocol/request.rb