summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2016-06-24 14:13:54 +0200
committerAzul <azul@riseup.net>2016-06-24 14:13:54 +0200
commit298afc7ec1d7cb49f5f0b29e5a19f6bb72f179fa (patch)
tree3959bf321bb1c549c28d6fd6de82bf1984731050 /lib
parentcd67dfac8f764140c47e0fba9304eba168c7a25b (diff)
first attempt at using celluloid instead of em - broken
Main problem right now is the outdated version of webmock.
Diffstat (limited to 'lib')
-rw-r--r--lib/nickserver/adapters/celluloid_http.rb17
-rw-r--r--lib/nickserver/reel_server.rb34
2 files changed, 51 insertions, 0 deletions
diff --git a/lib/nickserver/adapters/celluloid_http.rb b/lib/nickserver/adapters/celluloid_http.rb
new file mode 100644
index 0000000..5772bd1
--- /dev/null
+++ b/lib/nickserver/adapters/celluloid_http.rb
@@ -0,0 +1,17 @@
+require 'nickserver/adapters'
+# require 'celluloid/io'
+require 'http'
+
+module Nickserver::Adapters
+ class CelluloidHttp
+ # include Celluloid::IO
+
+ def get(url, options = {})
+ response = HTTP.get url,
+ params: options[:query]
+ # ssl_socket_class: Celluloid::IO::SSLSocket
+ yield response.code, response.to_s
+ end
+
+ end
+end
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