fun prepareDownloadFile()

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