diff options
author | azul <azul@riseup.net> | 2016-07-12 10:39:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-12 10:39:58 +0200 |
commit | d7599715c6d24534dcccbe29cfc058e534039053 (patch) | |
tree | 14824b08c4d0889e9767171ac5bafe3316a607f9 /lib/nickserver/reel_server.rb | |
parent | 27196b87e8d0ce5325381ea96ccd68ced8ee2e4d (diff) | |
parent | 6732fef4df156a02ed83f006f19f66cf567b5340 (diff) |
Merge pull request #5 from azul/celluloid
Use Celluloid, Reel and Celluloid I/O based http requests
Diffstat (limited to 'lib/nickserver/reel_server.rb')
-rw-r--r-- | lib/nickserver/reel_server.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/nickserver/reel_server.rb b/lib/nickserver/reel_server.rb new file mode 100644 index 0000000..6f05e0b --- /dev/null +++ b/lib/nickserver/reel_server.rb @@ -0,0 +1,47 @@ +silence_warnings do + require 'reel' +end +require 'nickserver/adapters/celluloid_http' +require 'nickserver/request_handler' + +module Nickserver + class ReelServer < Reel::Server::HTTP + + def self.start(options = {}) + new(options[:host], options[:port]) + end + + def initialize(host = "127.0.0.1", port = 3000) + super(host, port, &method(:on_connection)) + end + + def handle_connection(*args) + silence_warnings do + super + end + end + + def on_connection(connection) + connection.each_request do |request| + handler = handler_for(request) + handler.respond_to params(request), request.headers + end + end + + + protected + + def handler_for(request) + RequestHandler.new(request, Nickserver::Adapters::CelluloidHttp.new) + end + + def params(request) + if request.query_string + CGI.parse request.query_string + else + CGI.parse request.body.to_s + end + end + + end +end |