Sha256: a994373103fc1f004c162b8765f2688b6c291fbae14201587e702185b27d1cab

Contents?: true

Size: 919 Bytes

Versions: 1

Compression:

Stored size: 919 Bytes

Contents

require 'saorin/adapters/servers/base'
require 'reel'

module Saorin
  module Adapters
    module Servers
      class Reel < Base
        DEFAULT_HEADERS = {
          'Content-Type' => 'application/json'
        }.freeze

        def initialize(handler, options = {}, &block)
          super handler, options

          server = ::Reel::Server.supervise(options[:host], options[:port], &method(:process))
          trap(:INT) { server.terminate; exit }
          sleep
        end

        def process(connection)
          while request = connection.request
            case request
            when ::Reel::Request
              response_body = ''
              response_body = process_request(request.body) if request.method.to_s.upcase == 'POST'
              request.respond :ok, DEFAULT_HEADERS.dup, response_body
            end
          end
        end
      end

      register :reel, Reel
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
saorin-0.1.1 lib/saorin/adapters/servers/reel.rb