Sha256: f8cc8f3e11f32124deb397cf5fdc3cc7dff3aca8d35e6920b2c65906393776d9

Contents?: true

Size: 795 Bytes

Versions: 5

Compression:

Stored size: 795 Bytes

Contents

require 'saorin/adapters/servers/base'
require 'rack'

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

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

          ::Rack::Server.start({
            :app => self,
            :Host => options[:host],
            :Port => options[:port],
          }.merge(options))
        end

        def call(env)
          request = ::Rack::Request.new(env)
          response = ::Rack::Response.new([], 200, DEFAULT_HEADERS.dup)
          response.write process_request(request.body.read) if request.post?
          response.finish
        end
      end

      register :rack, Rack
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
saorin-0.2.0 lib/saorin/adapters/servers/rack.rb
saorin-0.1.4 lib/saorin/adapters/servers/rack.rb
saorin-0.1.3 lib/saorin/adapters/servers/rack.rb
saorin-0.1.2 lib/saorin/adapters/servers/rack.rb
saorin-0.1.1 lib/saorin/adapters/servers/rack.rb