Module: GRPCWeb::MessageSerialization

Extended by:
ContentTypes
Defined in:
lib/grpc_web/server/message_serialization.rb

Overview

Placeholder

Constant Summary

Constants included from ContentTypes

ContentTypes::ALL_CONTENT_TYPES, ContentTypes::BASE64_CONTENT_TYPES, ContentTypes::DEFAULT_CONTENT_TYPE, ContentTypes::JSON_CONTENT_TYPE, ContentTypes::PROTO_CONTENT_TYPE, ContentTypes::TEXT_CONTENT_TYPE, ContentTypes::TEXT_PROTO_CONTENT_TYPE, ContentTypes::UNSPECIFIED_CONTENT_TYPES

Class Method Summary collapse

Class Method Details

.deserialize_request(request) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/grpc_web/server/message_serialization.rb', line 15

def deserialize_request(request)
  service_class = request.service.class
  request_proto_class = service_class.rpc_descs[request.service_method.to_sym].input
  payload_frame = request.body.find(&:payload?)

  if request.content_type == JSON_CONTENT_TYPE
    request_proto = request_proto_class.decode_json(payload_frame.body)
  else
    request_proto = request_proto_class.decode(payload_frame.body)
  end

  ::GRPCWeb::GRPCWebRequest.new(
    request.service,
    request.service_method,
    request.content_type,
    request.accept,
    request_proto,
  )
end

.serialize_response(response) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/grpc_web/server/message_serialization.rb', line 35

def serialize_response(response)
  if response.body.is_a?(Exception)
    serialize_error_response(response)
  else
    serialize_success_response(response)
  end
end