override def stats()

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)
  }