lib/serviceworker/middleware.rb in serviceworker-rails-0.2.0 vs lib/serviceworker/middleware.rb in serviceworker-rails-0.3.0
- old
+ new
@@ -1,21 +1,24 @@
+# frozen_string_literal: true
module ServiceWorker
class Middleware
+ REQUEST_METHOD = "REQUEST_METHOD".freeze
+ GET = "GET".freeze
+ HEAD = "HEAD".freeze
+
def initialize(app, opts = {})
@app = app
@opts = opts
@headers = opts.fetch(:headers, {}).merge(default_headers)
@router = opts.fetch(:routes, ServiceWorker::Router.new)
end
def call(env)
- case env["REQUEST_METHOD"]
- when "GET", "HEAD"
- path = env["PATH_INFO"].chomp("/")
- info("responding to #{path}")
- route = @router.match_route(path)
- return respond_to_route(route, env) if route
+ case env[REQUEST_METHOD]
+ when GET, HEAD
+ route_match = @router.match_route(env)
+ return respond_to_match(route_match, env) if route_match
end
@app.call(env)
end
@@ -25,17 +28,15 @@
{
"Cache-Control" => "private, max-age=0, no-cache"
}
end
- def respond_to_route(route, env)
- status, headers, body = process_handler(route, env)
+ def respond_to_match(route_match, env)
+ env = env.merge("serviceworker.asset_name" => route_match.asset_name)
- [status, headers.merge(@headers).merge(route.headers), body]
- end
+ status, headers, body = handler.call(env)
- def process_handler(route, env)
- handler.call(env.merge("serviceworker.asset_name" => route.asset_name))
+ [status, headers.merge(@headers).merge(route_match.headers), body]
end
def info(msg)
logger.info "[#{self.class}] - #{msg}"
end