in src/main/scala/com/twitter/iago/server/FinagleTransport.scala [52:104]
override def stats(response: Response) = Some(Seq(response.statusCode.toString))
override def sendRequest(request: ParrotRequest): Future[Response] = {
val requestMethod = request.method match {
case "POST" => Method.Post
case _ => Method.Get
}
val httpRequest = if (request.isMultipart) {
RequestBuilder()
.url(
"https://%s:%s%s"
.format(request.hostHeader.get._1, request.hostHeader.get._2, request.uri.toString)
)
.add(elems = request.formElements)
.buildFormPost(true)
} else {
Request(Version.Http11, requestMethod, request.uri.toString)
}
httpRequest.uri = request.uri.toString
request.headers foreach {
case (key, value) =>
httpRequest.headerMap.set(key, value)
}
httpRequest.headerMap.set("Cookie", request.cookies map {
case (name, value) => name + "=" + value
} mkString (";"))
if (!httpRequest.headerMap.contains("User-Agent")) {
httpRequest.headerMap.set("User-Agent", "com.twitter.iago")
}
if (includeParrotHeader) {
httpRequest.headerMap.set("X-Parrot", "true")
}
httpRequest.headerMap.set("X-Forwarded-For", randomIp)
if (request.method == "POST" && request.body.length > 0) {
val buffer = Buf.Utf8(request.body)
httpRequest.headerMap.set(Fields.ContentLength, buffer.length.toString)
httpRequest.content = buffer
}
allRequests.incrementAndGet()
log.debug(
"""
===================== HttpRequest ======================
%s / %s
========================================================"""
.format(httpRequest.toString, httpRequest.headerMap.get("User-Agent"))
)
service.send(httpRequest, request)
}