in Sources/NIOHTTP1Server/main.swift [249:280]
func dynamicHandler(request reqHead: HTTPRequestHead) -> ((ChannelHandlerContext, HTTPServerRequestPart) -> Void)? {
if let howLong = reqHead.uri.chopPrefix("/dynamic/write-delay/") {
return { context, req in
self.handleJustWrite(context: context,
request: req, string: self.defaultResponse,
delay: Int64(howLong).map { .milliseconds($0) } ?? .seconds(0))
}
}
switch reqHead.uri {
case "/dynamic/echo":
return self.handleEcho
case "/dynamic/echo_balloon":
return { self.handleEcho(context: $0, request: $1, balloonInMemory: true) }
case "/dynamic/pid":
return { context, req in self.handleJustWrite(context: context, request: req, string: "\(getpid())") }
case "/dynamic/write-delay":
return { context, req in self.handleJustWrite(context: context, request: req, string: self.defaultResponse, delay: .milliseconds(100)) }
case "/dynamic/info":
return self.handleInfo
case "/dynamic/trailers":
return { context, req in self.handleJustWrite(context: context, request: req, string: "\(getpid())\r\n", trailer: ("Trailer-Key", "Trailer-Value")) }
case "/dynamic/continuous":
return self.handleContinuousWrites
case "/dynamic/count-to-ten":
return { self.handleMultipleWrites(context: $0, request: $1, strings: (1...10).map { "\($0)" }, delay: .milliseconds(100)) }
case "/dynamic/client-ip":
return { context, req in self.handleJustWrite(context: context, request: req, string: "\(context.remoteAddress.debugDescription)") }
default:
return { context, req in self.handleJustWrite(context: context, request: req, statusCode: .notFound, string: "not found") }
}
}