//
//  DelegatingResponse.swift
//  TuskerUITests
//
//  Created by Shadowfacts on 12/31/19.
//  Copyright © 2019 Shadowfacts. All rights reserved.
//

import Foundation
import Ambassador

struct DelegatingResponse: WebApp {
    let handler: (_ ctx: Context) -> WebApp
    
    func app(_ environ: [String : Any], startResponse: @escaping ((String, [(String, String)]) -> Void), sendBody: @escaping ((Data) -> Void)) {
        let ctx = Context(environ: environ)
        handler(ctx).app(environ, startResponse: startResponse, sendBody: sendBody)
    }
}

extension DelegatingResponse {
    struct Context {
        let environ: [String: Any]
        
        var captures: [String] {
            environ["ambassador.router_captures"] as? [String] ?? []
        }
    }
}