diff options
Diffstat (limited to 'lib/nickserver')
| -rw-r--r-- | lib/nickserver/adapters/celluloid_http.rb | 17 | ||||
| -rw-r--r-- | lib/nickserver/reel_server.rb | 34 | 
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 | 
