class Protein::Payload::Response
Public Class Methods
decode(payload)
click to toggle source
# File lib/protein/payload.rb, line 36 def decode(payload) hash = JSON.parse(payload) response_buf_b64 = hash["response_buf_b64"] response_buf = response_buf_b64 && Base64.strict_decode64(response_buf_b64) errors = hash["errors"] errors = errors && decode_errors(errors) [response_buf, errors] end
encode(response_buf, errors)
click to toggle source
# File lib/protein/payload.rb, line 29 def encode(response_buf, errors) JSON.dump({ "response_buf_b64" => response_buf && Base64.strict_encode64(response_buf), "errors" => encode_errors(errors) }) end
Private Class Methods
decode_errors(errors)
click to toggle source
# File lib/protein/payload.rb, line 57 def decode_errors(errors) errors && errors.map do |error| reason_string = error["reason"] reason = reason_string =~ /^\:/ ? reason_string[1..-1].to_sym : reason_string pointer = error["pointer"] ServiceError.new( reason: reason, pointer: pointer && Pointer.new(nil, "request").load(pointer) ) end end
encode_errors(errors)
click to toggle source
# File lib/protein/payload.rb, line 48 def encode_errors(errors) errors && errors.map do |error| { "reason" => error.reason.is_a?(Symbol) ? ":#{error.reason}" : error.reason, "pointer" => error.pointer && error.pointer.dump } end end