Module: Rough::BaseController
- Defined in:
- lib/rough/base_controller.rb
Constant Summary collapse
- PROTO_MIME =
Mime::Type.new('application/x-protobuf')
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/rough/base_controller.rb', line 11 def self.included(base) base.class_eval do before_action :log_proto, if: :rpc? alias_method_chain :params, :request_proto end end |
Instance Method Details
#render(options = {}) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rough/base_controller.rb', line 18 def render( = {}) return if performed? if rpc? if request.accept == PROTO_MIME || request.content_type == PROTO_MIME response.headers['Content-Type'] = PROTO_MIME.to_s super text: response_proto.encode, status: [:status] else super json: response_proto.to_json, status: [:status] end else super end end |
#request_proto ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rough/base_controller.rb', line 32 def request_proto return nil unless rpc? @request_proto ||= if request.content_type == PROTO_MIME RpcRegistry.request_class_for(rpc_name).decode(request.body.read) else RpcRegistry.request_class_for(rpc_name).new(params_without_request_proto) end rescue TypeError => e raise InvalidRequestProto, e end |
#response_proto ⇒ Object
44 45 46 47 |
# File 'lib/rough/base_controller.rb', line 44 def response_proto return nil unless rpc? @response_proto ||= RpcRegistry.response_class_for(rpc_name).new end |