in backup-parameter-store/src/main/scala/com/gu/aws/wrappers.scala [37:62]
def getPath(path: String, isRecursiveSearch: Boolean = false): Map[String, String] = {
@tailrec
def paginate(accum: Map[String, String], nextToken: Option[String]): Map[String, String] = {
val parameterRequest = new GetParametersByPathRequest()
.withWithDecryption(true)
.withPath(path)
.withRecursive(isRecursiveSearch)
val parameterRequestWithNextToken = nextToken.map(parameterRequest.withNextToken).getOrElse(parameterRequest)
val result = client.getParametersByPath(parameterRequestWithNextToken)
val resultMap = result.getParameters.asScala.map { param =>
param.getName -> unwrapQuotedString(param.getValue)
}.toMap
Option(result.getNextToken) match {
case Some(next) => paginate(accum ++ resultMap, Some(next))
case None => accum ++ resultMap
}
}
paginate(Map.empty, None)
}