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.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/nickserver/reel_server.rb b/lib/nickserver/reel_server.rb
new file mode 100644
index 0000000..c12c402
--- /dev/null
+++ b/lib/nickserver/reel_server.rb
@@ -0,0 +1,34 @@
+require 'celluloid/autostart'
+require 'reel'
+require 'nickserver/adapters/celluloid_http'
+require 'nickserver/request_handler'
+
+module Nickserver
+ class ReelServer
+
+ def self.start(options = {})
+ Reel::Server::HTTP.run(options[:host], options[:port]) do |connection|
+ # Support multiple keep-alive requests per connection
+ connection.each_request do |request|
+ handler = handler_for(request)
+ handler.respond_to params(request), request.headers
+ end
+ end
+ end
+
+ protected
+
+ def self.handler_for(request)
+ RequestHandler.new(request, Nickserver::Adapters::CelluloidHttp.new)
+ end
+
+ def self.params(request)
+ if request.query_string
+ CGI.parse request.query_string
+ else
+ CGI.parse request.body.to_s
+ end
+ end
+
+ end
+end