class Protobuf::Rpc::Middleware::RequestDecoder
Attributes
app[R]
env[R]
Public Class Methods
new(app)
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 9 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 13 def call(env) @env = env env.service_name = service_name env.method_name = method_name env.request = request env.client_host = request_wrapper.caller env.rpc_service = service env.rpc_method = rpc_method env.request_type = rpc_method.request_type env.response_type = rpc_method.response_type app.call(env) end
log_signature()
click to toggle source
Calls superclass method
Protobuf::Logging#log_signature
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 29 def log_signature env.log_signature || super end
Private Instance Methods
method_name()
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 35 def method_name @method_name ||= begin method_name = request_wrapper.method_name.underscore.to_sym unless service.rpc_method?(method_name) fail MethodNotFound, "#{service.name}##{method_name} is not a defined RPC method." end method_name end end
request()
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 47 def request @request ||= begin data = request_wrapper.request_proto rpc_method.request_type.decode(data) end rescue => exception raise BadRequestData, "Unable to decode request: #{exception.message}" end
request_wrapper()
click to toggle source
Decode the incoming request object into our expected request object
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 58 def request_wrapper @request_wrapper ||= begin logger.debug { sign_message("Decoding request: #{env.encoded_request}") } Socketrpc::Request.decode(env.encoded_request) end rescue => exception raise BadRequestData, "Unable to decode request: #{exception.message}" end
rpc_method()
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 67 def rpc_method @rpc_method ||= service.rpcs[method_name] end
service()
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 71 def service @service ||= service_name.constantize rescue NameError raise ServiceNotFound, "Service class #{service_name} is not defined." end
service_name()
click to toggle source
# File lib/protobuf/rpc/middleware/request_decoder.rb, line 77 def service_name @service_name ||= request_wrapper.service_name end