def handleRequest()

in src/main/scala/Handler.scala [36:89]


  def handleRequest(
      event: APIGatewayProxyRequestEvent,
      context: Context
  ): APIGatewayProxyResponseEvent = {
    logger.info(
      "Received request with params: " + event
        .getQueryStringParameters()
        .toString()
    )

    val eventualResult = event
      .getQueryStringParameters()
      .asScala
      .get("query")
      .map(query =>
        cql
          .run(query)
          .map(r =>
            Try {
              (200, r.asJson.spaces2)
            }.recover { e =>
              logger.error("Server error", e)
              (500, e.getMessage())
            }.get
          )
          .recover { e =>
            logger.error("Bad request", e)
            (400, e.getMessage())
          }
      )
      .getOrElse(
        Future.successful(
          (
            400,
            "No query specified. Supply a URL parameter for `query`, e.g. ?query=example"
          )
        )
      )

    val (statusCode, responseBody) = Await.result(eventualResult, 5.seconds)

    logger.info(s"Responding with status ${statusCode}: ${responseBody}")

    new APIGatewayProxyResponseEvent()
      .withHeaders(
        Map(
          "Access-Control-Allow-Origin" -> "*"
        ).asJava
      )
      .withStatusCode(statusCode)
      .withBody(
        responseBody
      )
  }