Sha256: 89d03818be5778cfe71b922996b1e538145a519965786d3fd8b0faa14c41f812

Contents?: true

Size: 1.2 KB

Versions: 6

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=86400,s-maxage=86400"

        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

6 entries across 6 versions & 1 rubygems

Version Path
hyperdrive-0.0.19 lib/hyperdrive/server.rb
hyperdrive-0.0.18 lib/hyperdrive/server.rb
hyperdrive-0.0.17 lib/hyperdrive/server.rb
hyperdrive-0.0.16 lib/hyperdrive/server.rb
hyperdrive-0.0.15 lib/hyperdrive/server.rb
hyperdrive-0.0.14 lib/hyperdrive/server.rb