lib/hyperdrive/server.rb in hyperdrive-0.0.5 vs lib/hyperdrive/server.rb in hyperdrive-0.0.6
- old
+ new
@@ -8,33 +8,32 @@
private
def self.server
Rack::Builder.new do
- use Rack::Runtime
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
- info = ''
- hyperdrive.resources.each do |type, resource|
- info += %Q({"id":"#{resource.endpoint}","name":"#{resource.name}","desc":"#{resource.desc}","type":"#{type}"})
- end
-
- run ->(env) {
- [200, { 'Content-Type' => 'application/json', 'Allow' => Hyperdrive::Values.request_methods.join(",") }, ["[#{info}]"]]
- }
+ run Hyperdrive::HATEOAS
end
- hyperdrive.resources.each do |key, resource|
+ hyperdrive.resources.each do |key, resource|
map resource.endpoint do
- run ->(env) {
- begin
- Hyperdrive::Response.new(env, resource).response
- rescue Hyperdrive::Errors::HTTPError => error
- [error.http_status_code, { 'Allow' => resource.allowed_methods.join(',') }, [error.message]]
- end
- }
+ use Hyperdrive::Middleware::Resource, resource
+ use Hyperdrive::Middleware::RequestMethod
+ use Hyperdrive::Middleware::SanitizeParams
+ 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