in formstack-baton-requests/src/main/scala/com/gu/identity/formstackbatonrequests/Handler.scala [55:74]
def handleRequest(input: InputStream, output: OutputStream, context: Context)(
implicit decoder: Decoder[Req],
encoder: Encoder[Res]): Unit = {
try {
val response = for {
request <- decode[Req](Source.fromInputStream(input).mkString)
_ <- checkFormstackDataProvider(request)
_ <- checkRequestTypeMatchesRequest(request)
response <- handle(request, context)
} yield response
response match {
case Left(err) => output.write(err.toString.asJson.printWith(jsonPrinter).getBytes)
case Right(res) => output.write(res.asJson.printWith(jsonPrinter).getBytes)
}
} finally {
output.close()
}
}