Class: ServiceWorker::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/serviceworker/middleware.rb

Constant Summary collapse

REQUEST_METHOD =
"REQUEST_METHOD"
GET =
"GET"
HEAD =
"HEAD"

Instance Method Summary collapse

Constructor Details

#initialize(app, opts = {}) ⇒ Middleware

Initialize the Rack middleware for responding to serviceworker asset requests

Parameters:

  • opts (#match_route) (defaults to: {})

    :routes matches routes on PATH_INFO

  • opts (Hash) (defaults to: {})

    :headers default headers to use for matched routes

  • opts (#call) (defaults to: {})

    :handler resolves response from matched asset name

  • opts (#info) (defaults to: {})

    :logger logs requests



20
21
22
23
24
25
26
# File 'lib/serviceworker/middleware.rb', line 20

def initialize(app, opts = {})
  @app = app
  @opts = opts
  @headers = default_headers.merge(opts.fetch(:headers, {}))
  @router = opts.fetch(:routes, ServiceWorker::Router.new)
  @handler = Handlers.build(@opts.fetch(:handler, nil))
end

Instance Method Details

#call(env) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/serviceworker/middleware.rb', line 28

def call(env)
  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