Class: Gruf::Controllers::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/gruf/controllers/request.rb

Overview

Encapsulates a request for a controller

Defined Under Namespace

Classes: Type

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(method_key:, service:, rpc_desc:, active_call:, message:) ⇒ Request

Initialize an inbound controller request object



68
69
70
71
72
73
74
75
# File 'lib/gruf/controllers/request.rb', line 68

def initialize(method_key:, service:, rpc_desc:, active_call:, message:)
  @method_key = method_key
  @service = service
  @active_call = active_call
  @message = message
  @rpc_desc = rpc_desc
  @type = Type.new(rpc_desc)
end

Instance Attribute Details

#active_callObject (readonly)

Returns the value of attribute active_call.



29
30
31
# File 'lib/gruf/controllers/request.rb', line 29

def active_call
  @active_call
end

#messageObject (readonly)

Returns the value of attribute message.



26
27
28
# File 'lib/gruf/controllers/request.rb', line 26

def message
  @message
end

#method_keyObject (readonly)

Returns the value of attribute method_key.



32
33
34
# File 'lib/gruf/controllers/request.rb', line 32

def method_key
  @method_key
end

#serviceObject (readonly)

Returns the value of attribute service.



38
39
40
# File 'lib/gruf/controllers/request.rb', line 38

def service
  @service
end

#typeObject (readonly)

Returns the value of attribute type.



35
36
37
# File 'lib/gruf/controllers/request.rb', line 35

def type
  @type
end

Instance Method Details

#messagesEnumerable<Object>, Object

Return all messages for this request, properly handling different request types



116
117
118
119
120
121
122
123
124
125
126
# File 'lib/gruf/controllers/request.rb', line 116

def messages
  if client_streamer?
    # rubocop:disable Style/ExplicitBlockArgument
    @message.call { |msg| yield msg }
    # rubocop:enable Style/ExplicitBlockArgument
  elsif bidi_streamer?
    @message
  else
    [@message]
  end
end

#method_nameString

Parse the method signature into a service.method name format



106
107
108
# File 'lib/gruf/controllers/request.rb', line 106

def method_name
  "#{service_key}.#{@method_key}"
end

#request_classClass



97
98
99
# File 'lib/gruf/controllers/request.rb', line 97

def request_class
  @rpc_desc.input
end

#response_classClass



90
91
92
# File 'lib/gruf/controllers/request.rb', line 90

def response_class
  @rpc_desc.output
end

#service_keyString

Returns the service name as a translated name separated by periods. Strips the superfluous “Service” suffix from the name



83
84
85
# File 'lib/gruf/controllers/request.rb', line 83

def service_key
  @service.name.to_s.underscore.tr('/', '.').gsub('.service', '')
end