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