Module: GrpcInterceptors::Common::GrpcHelper

Defined in:
lib/grpc_interceptors/common/grpc_helper.rb

Class Method Summary collapse

Class Method Details

.method_name(method) ⇒ Object



22
23
24
25
26
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 22

def self.method_name(method)
  return method_name_from_server(method) if method.is_a?(Method) # server case

  method_name_from_client(method) # client case
end

.method_name_from_client(method) ⇒ Object



41
42
43
44
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 41

def self.method_name_from_client(method)
  method_parts = method.to_s.sub(%r{^/}, '').split('/')
  method_parts[1..].join('/')
end

.method_name_from_server(method) ⇒ Object



32
33
34
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 32

def self.method_name_from_server(method)
  method.original_name.to_s
end

.proto_to_h(proto) ⇒ Object

converts proto message to a Ruby hash preserving the original fields’ names and including default values WARNING! It can be slow and not 100% accurate. In this gem it’s only used in the DEBUG mode related comment: github.com/protocolbuffers/protobuf/issues/6755#issuecomment-733880977



50
51
52
53
54
55
56
57
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 50

def self.proto_to_h(proto)
  JSON(
    proto.to_json(
      emit_defaults: true,
      preserve_proto_fieldnames: true
    )
  )
end

.route_name(method) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 6

def self.route_name(method)
  return method unless method.is_a?(Method) # client case

  # server case
  service_name = service_name_from_server(method)
  method_name = method_name_from_server(method)

  "/#{service_name}/#{method_name}"
end

.service_name(method) ⇒ Object



16
17
18
19
20
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 16

def self.service_name(method)
  return service_name_from_server(method) if method.is_a?(Method) # server case

  service_name_from_client(method) # client case
end

.service_name_from_client(method) ⇒ Object



36
37
38
39
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 36

def self.service_name_from_client(method)
  method_parts = method.to_s.sub(%r{^/}, '').split('/')
  method_parts.first
end

.service_name_from_server(method) ⇒ Object



28
29
30
# File 'lib/grpc_interceptors/common/grpc_helper.rb', line 28

def self.service_name_from_server(method)
  method.owner.service_name.to_s
end