From 298afc7ec1d7cb49f5f0b29e5a19f6bb72f179fa Mon Sep 17 00:00:00 2001 From: Azul 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') 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