in src/main/kotlin/org/jetbrains/teamcity/rest/infrastructure/ApiClient.kt [221:253]
fun prepareDownloadFile(response: Response): File {
var filename: String? = null
val contentDisposition = response.headers().get("Content-Disposition")
if (contentDisposition != null && contentDisposition != "") {
val pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?")
val matcher = pattern.matcher(contentDisposition)
if (matcher.find())
filename = matcher.group(1)
}
var prefix: String
var suffix: String? = null
if (filename == null) {
prefix = "download-"
suffix = ""
} else {
val pos = filename.lastIndexOf('.')
if (pos == -1) {
prefix = "$filename-";
} else {
prefix = filename.substring(0, pos) + "-"
suffix = filename.substring(pos)
}
// File.createTempFile requires the prefix to be at least three characters long
if (prefix.length < 3)
prefix = "download-"
}
return File.createTempFile(prefix, suffix)
}