Class: Pollen::Middleware

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

Constant Summary collapse

UUID_REGEXP =
/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware



7
8
9
10
11
# File 'lib/pollen/middleware.rb', line 7

def initialize(app)
  @app = app
  @server = Pollen.server
  @route = @server.configuration.route_regexp
end

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/pollen/middleware.rb', line 13

def call(env)
  request = Rack::Request.new(env)
  if @server.started? && (stream_id = request.path.match(@route)&.captures&.first)
    raise 'Unable to hijack HTTP connection' unless env['rack.hijack?']

    authenticate_and_hijack(request, env, stream_id)
  else
    @app.call(env)
  end
end