class ProtoPharm::Introspection::RpcInspector
Attributes
endpoint_name[R]
grpc_service[R]
Public Class Methods
new(service, endpoint_name)
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 10 def initialize(service, endpoint_name) @grpc_service = ServiceResolver.resolve(service) @endpoint_name = endpoint_name end
Public Instance Methods
grpc_path()
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 34 def grpc_path @grpc_path ||= "/#{service_name}/#{normalized_rpc_name}" end
input_type()
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 38 def input_type rpc_desc.input end
normalize_request_proto(proto = nil, **kwargs)
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 16 def normalize_request_proto(proto = nil, **kwargs) cast_proto(input_type, proto, **kwargs) end
normalize_response_proto(proto = nil, **kwargs)
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 20 def normalize_response_proto(proto = nil, **kwargs) cast_proto(output_type, proto, **kwargs) end
normalized_rpc_name()
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 24 def normalized_rpc_name @normalized_rpc_name ||= endpoint_name.to_s.camelize.to_sym end
output_type()
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 42 def output_type rpc_desc.output end
rpc_desc()
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 28 def rpc_desc @rpc_desc ||= rpc_descs[normalized_rpc_name].tap do |endpoint| raise RpcNotFoundError, "Service #{service_name} does not implement '#{normalized_rpc_name}'" if endpoint.blank? end end
Private Instance Methods
cast_proto(proto_class, proto = nil, **kwargs)
click to toggle source
# File lib/proto_pharm/introspection/rpc_inspector.rb, line 48 def cast_proto(proto_class, proto = nil, **kwargs) return proto_class.new(**kwargs) if proto.blank? return proto_class.new(proto) if proto.respond_to?(:to_hash) raise InvalidProtoType, "Invalid proto type #{proto.class} for #{grpc_path}, expected #{proto_class}" unless proto.class == proto_class proto end