class OpenapiFirst::Responder
Public Class Methods
new(namespace: nil, resolver: nil)
click to toggle source
# File lib/openapi_first/responder.rb, line 9 def initialize(namespace: nil, resolver: nil) @resolver = resolver || DefaultOperationResolver.new(namespace) @namespace = namespace end
Public Instance Methods
call(env)
click to toggle source
# File lib/openapi_first/responder.rb, line 14 def call(env) operation = env[OpenapiFirst::OPERATION] res = Rack::Response.new handler = find_handler(operation) result = handler.call(env[INBOX], res) res.write serialize(result) if result && res.body.empty? res[Rack::CONTENT_TYPE] ||= operation.content_type_for(res.status) res.finish end
Private Instance Methods
find_handler(operation)
click to toggle source
# File lib/openapi_first/responder.rb, line 26 def find_handler(operation) handler = @resolver.call(operation) raise NotImplementedError, "Could not find handler for #{operation.name}" unless handler handler end
serialize(result)
click to toggle source
# File lib/openapi_first/responder.rb, line 33 def serialize(result) return result if result.is_a?(String) MultiJson.dump(result) end