From 298afc7ec1d7cb49f5f0b29e5a19f6bb72f179fa Mon Sep 17 00:00:00 2001
From: Azul <azul@riseup.net>
Date: Fri, 24 Jun 2016 14:13:54 +0200
Subject: first attempt at using celluloid instead of em - broken

Main problem right now is the outdated version of webmock.
---
 lib/nickserver/adapters/celluloid_http.rb | 17 ++++++++++++++++
 lib/nickserver/reel_server.rb             | 34 +++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+)
 create mode 100644 lib/nickserver/adapters/celluloid_http.rb
 create mode 100644 lib/nickserver/reel_server.rb

(limited to 'lib/nickserver')

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
-- 
cgit v1.2.3