Sha256: 39413553d2b6cbc1d00da6561912591ac0e2d9c833984e1221dc511f6c85c069
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module BERTRPC module Encodes def encode_ruby_request(ruby_request) ruby_payload = convert(ruby_request) Erlectricity::Encoder.encode(ruby_payload) end def decode_bert_response(bert_response) ruby_response = Erlectricity::Decoder.decode(bert_response) case ruby_response[0] when :reply deconvert(ruby_response[1]) when :error error(ruby_response[1]) else raise end end def error(err) case err[0] when :protocol raise ProtocolError.new(err[2]) when :server raise ServerError.new(err[2]) when :user raise UserError.new(err[2]) when :proxy raise ProxyError.new(err[2]) else raise end end def convert(item) if item.instance_of?(Hash) a = [:dict] item.each_pair { |k, v| a << [convert(k), convert(v)] } a elsif item.instance_of?(Array) item.map { |x| convert(x) } else item end end def deconvert(item) if item.instance_of?(Array) if item.first == :dict item[1..-1].inject({}) do |acc, x| acc[deconvert(x[0])] = deconvert(x[1]); acc end else item.map { |x| deconvert(x) } end else item end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
mojombo-bertrpc-0.2.0 | lib/bertrpc/encodes.rb |
bertrpc-0.2.0 | lib/bertrpc/encodes.rb |