class Fluent::PluginHelper::HttpServer::Compat::Server
Public Class Methods
new(addr:, port:, logger:, default_app: nil, tls_context: nil) { |self| ... }
click to toggle source
@param logger [Logger] @param default_app [Object] ignored option. only for compat @param tls_context [OpenSSL::SSL::SSLContext]
# File lib/fluent/plugin_helper/http_server/compat/server.rb, line 29 def initialize(addr:, port:, logger:, default_app: nil, tls_context: nil) @addr = addr @port = port @logger = logger config = { BindAddress: @addr, Port: @port, Logger: WEBrick::Log.new(STDERR, WEBrick::Log::FATAL), AccessLog: [], } if tls_context require 'webrick/https' @logger.warn('Webrick ignores given TLS version') tls_opt = Fluent::PluginHelper::HttpServer::Compat::SSLContextExtractor.extract(tls_context) config = tls_opt.merge(**config) end @server = WEBrick::HTTPServer.new(config) # @example ["/example.json", :get, handler object] @methods = [] if block_given? yield(self) end end
Public Instance Methods
start(notify = nil)
click to toggle source
# File lib/fluent/plugin_helper/http_server/compat/server.rb, line 57 def start(notify = nil) build_handler notify.push(:ready) @logger.debug('Start webrick HTTP server listening') @server.start end
stop()
click to toggle source
# File lib/fluent/plugin_helper/http_server/compat/server.rb, line 64 def stop @server.shutdown @server.stop end
Private Instance Methods
build_handler()
click to toggle source
# File lib/fluent/plugin_helper/http_server/compat/server.rb, line 82 def build_handler @methods.group_by(&:first).each do |(path, rest)| klass = Fluent::PluginHelper::HttpServer::Compat::WebrickHandler.build(**Hash[rest.map { |e| [e[1], e[2]] }]) @server.mount(path, klass) end end