Sha256: 4db1d2d4586dc05240617d9fee8381ce9aa49dc7558b83a815c14ae11fc3b8f6

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 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::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

2 entries across 2 versions & 1 rubygems

Version Path
hyperdrive-0.0.21 lib/hyperdrive/server.rb
hyperdrive-0.0.20 lib/hyperdrive/server.rb