Module: Warden::Protocol::BaseMessage

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/warden/protocol/base.rb', line 80

def self.included(base)
  base.send(:include, Beefcake::Message)

  if base.name =~ /(Request|Response)$/
    base.extend(ClassMethods)

    case $1
    when "Request"
      base.send(:include, BaseRequest)
    when "Response"
      base.send(:include, BaseResponse)
    end
  end
end

Instance Method Details

#reloadObject



103
104
105
106
107
# File 'lib/warden/protocol/base.rb', line 103

def reload
  safe do
    self.class.decode(encode)
  end
end

#safeObject



95
96
97
98
99
100
101
# File 'lib/warden/protocol/base.rb', line 95

def safe
  yield
rescue Beefcake::Message::WrongTypeError,
       Beefcake::Message::InvalidValueError,
       Beefcake::Message::RequiredFieldNotSetError => e
  raise ProtocolError, e
end

#to_hashObject



115
116
117
118
119
120
121
122
123
# File 'lib/warden/protocol/base.rb', line 115

def to_hash
  fields.values.inject({}) do |h, fld|
    if v = self[fld.name]
      v = v.to_hash if v.respond_to?(:to_hash)
      h[fld.name] = v
    end
    h
  end
end

#wrapObject



109
110
111
112
113
# File 'lib/warden/protocol/base.rb', line 109

def wrap
  safe do
    Message.new(:type => self.class.type, :payload => encode)
  end
end