Add the error response type to the library
parent
d96239dd65
commit
3f8b74005d
@ -0,0 +1,48 @@
|
||||
require 'qmp_client/messages/message'
|
||||
|
||||
module QMPClient
|
||||
module Messages
|
||||
class Error < Message
|
||||
attr_reader :request_id
|
||||
attr_reader :error_class
|
||||
attr_reader :data
|
||||
attr_reader :desc
|
||||
|
||||
# Does the hash represent a Command?
|
||||
def self.represents?(hsh)
|
||||
super(hsh) &&
|
||||
(hsh.keys - %w|id error|).empty? && hsh['error'].is_a?(Hash) &&
|
||||
hsh['error']['class'].is_a?(String) &&
|
||||
hsh['error']['data'].is_a?(Hash) &&
|
||||
hsh['error']['desc'].is_a?(String)
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
other.is_a?(Error) && [
|
||||
:request_id, :error_class, :data, :desc
|
||||
].all? {|m| self.send(m) == other.send(m) }
|
||||
end
|
||||
|
||||
def self.build(hsh)
|
||||
err = hsh['error']
|
||||
new(hsh['id'], err['class'], err['data'], err['desc'])
|
||||
end
|
||||
|
||||
def initialize(request_id, err_kls, data, desc)
|
||||
@request_id = request_id
|
||||
@error_class = err_kls
|
||||
@data = data
|
||||
@desc = desc
|
||||
end
|
||||
|
||||
def to_hash
|
||||
{ 'id' => request_id,
|
||||
'error' => {
|
||||
'class' => error_class, 'data' => data, 'desc' => desc
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue