Sha256: 1aeb1fce343755185da95cd630a588808fdf45460c6ad4700fbc52845b85836c

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

# encoding: utf-8

module Hyperdrive
  class Server
    def self.call(env)
      server.call(env)
    end

    private

    def self.server
      Rack::Builder.new do
        use Rack::Lint
        use Rack::Runtime
        use Rack::MethodOverride
        use Rack::Head
        use Rack::ConditionalGet
        use Hyperdrive::Middleware::Error
        use Hyperdrive::Middleware::Accept
        use Rack::Deflater
        use Rack::ETag, "max-age=0,private,must-revalidate", "public,max-age=3600,s-maxage=3600"

        map '/' do
          run Hyperdrive::HATEOAS
        end

        hyperdrive.resources.each do |key, resource|
          map resource.endpoint do
            use Hyperdrive::Middleware::Resource, resource
            use Hyperdrive::Middleware::RequestMethod
            use Hyperdrive::Middleware::ParseJSONBody
            use Hyperdrive::Middleware::SanitizeParams
            use Hyperdrive::Middleware::Charset
            use Hyperdrive::Middleware::Pagination
            use Hyperdrive::Middleware::RequiredParams
            use Hyperdrive::Middleware::CORS, hyperdrive.config[:cors]
            use Hyperdrive::Middleware::ContentNegotiation
            run Hyperdrive::Endpoint
          end
        end
      end.to_app
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hyperdrive-0.0.25 lib/hyperdrive/server.rb
hyperdrive-0.0.24 lib/hyperdrive/server.rb
hyperdrive-0.0.23 lib/hyperdrive/server.rb
hyperdrive-0.0.22 lib/hyperdrive/server.rb