lib/sanford-protocol/request.rb in sanford-protocol-0.10.0 vs lib/sanford-protocol/request.rb in sanford-protocol-0.11.0
- old
+ new
@@ -1,30 +1,27 @@
-# 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
-# name and params.
+require 'sanford-protocol'
module Sanford; end
module Sanford::Protocol
- BadRequestError = Class.new(RuntimeError)
-
class Request
def self.parse(body)
self.new(body['name'], body['params'])
end
attr_reader :name, :params
def initialize(name, params)
self.validate!(name, params)
- @name, @params = name.to_s, params
+ @name = name.to_s
+ @params = params
end
def to_hash
{ 'name' => name,
- 'params' => self.stringify(params)
+ 'params' => Sanford::Protocol::StringifyParams.new(params)
}
end
def to_s; name; end
@@ -47,24 +44,15 @@
def validate!(name, params)
problem = if !name
"The request doesn't contain a name."
elsif !params.kind_of?(::Hash)
- "The request's params are not a valid BSON document."
+ "The request's params are not valid."
end
- raise(BadRequestError, problem) if problem
+ raise(InvalidError, problem) if problem
end
- def stringify(object)
- case(object)
- when Hash
- object.inject({}){|h, (k, v)| h.merge({ k.to_s => self.stringify(v) }) }
- when Array
- object.map{|item| self.stringify(item) }
- else
- object
- end
- end
+ InvalidError = Class.new(ArgumentError)
end
end