class RespondToPb
Public Class Methods
new(app)
click to toggle source
# File lib/rails_respond_to_pb/respond_to_pb.rb, line 6 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rails_respond_to_pb/respond_to_pb.rb, line 10 def call(env) _, @resource, @action = env['PATH_INFO'].split('/') if env['CONTENT_TYPE'] == Twirp::Encoding::PROTO env['HTTP_ACCEPT'] = Twirp::Encoding::PROTO service.call(env) else @app.call(env) end end
Private Instance Methods
controller_class()
click to toggle source
# File lib/rails_respond_to_pb/respond_to_pb.rb, line 39 def controller_class ::ActiveSupport::Dependencies.constantize("#{@resource}Controller") end
handler()
click to toggle source
# File lib/rails_respond_to_pb/respond_to_pb.rb, line 23 def handler TwirpHandler.new(controller: controller_class) end
service()
click to toggle source
# File lib/rails_respond_to_pb/respond_to_pb.rb, line 27 def service service_class.new(handler).tap do |svc| svc.before do |rack_env, rpc_env| rpc_env[:rack_env] = rack_env end end end
service_class()
click to toggle source
# File lib/rails_respond_to_pb/respond_to_pb.rb, line 35 def service_class ::ActiveSupport::Dependencies.constantize("#{@resource}Service") end