class Fluent::PluginHelper::HttpServer::Compat::WebrickHandler
Public Class Methods
build(get: nil, head: nil, post: nil, put: nil, patch: nil, delete: nil, connect: nil, options: nil, trace: nil)
click to toggle source
**opt is enough. but I wrote a signature explicitly for readability
# File lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb, line 26 def self.build(get: nil, head: nil, post: nil, put: nil, patch: nil, delete: nil, connect: nil, options: nil, trace: nil) opt = { get: get, head: head, post: post, put: put, patch: patch, delete: delete, connect: connect, options: options, trace: trace } Class.new(WEBrick::HTTPServlet::AbstractServlet) do HttpServer::Methods::ALL.each do |name| define_method("do_#{name}") do |request, response| code, headers, body = if request.path_info != '' render_json(404, 'message' => 'Not found') else begin opt[name.downcase.to_sym].call(request) rescue => _ render_json(500, 'message' => 'Something went wrong') end end response.status = code headers.each { |k, v| response[k] = v } response.body = body end end def render_json(code, obj) [code, { 'Content-Type' => 'application/json' }, obj.to_json] end end end
Public Instance Methods
render_json(code, obj)
click to toggle source
# File lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb, line 49 def render_json(code, obj) [code, { 'Content-Type' => 'application/json' }, obj.to_json] end