summaryrefslogtreecommitdiff
path: root/lib/nickserver/reel_server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/nickserver/reel_server.rb')
-rw-r--r--lib/nickserver/reel_server.rb47
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