lib/zuora_connect/middleware/hallway.rb
# frozen_string_literal: true module ZuoraConnect module Middleware # Enables requests to be served from dynamic paths, determined by headers class Hallway UI_PATH = 'HTTP_ZUORA_UI_PATH' LAYOUT_ID = 'HTTP_ZUORA_LAYOUT_FETCH_TEMPLATE_ID' def initialize(app) @app = app end def call(env) dynamic_path = env[UI_PATH].presence || layout_id(env) Thread.current[:isHallway] = dynamic_path if dynamic_path.present? env['SCRIPT_NAME'] = dynamic_path env['PATH_INFO'] = env['PATH_INFO'].sub(dynamic_path, '') end @app.call(env) end private def layout_id(env) "/#{env[LAYOUT_ID]}" if env[LAYOUT_ID].present? end end end end