private string _getFileName(WebResponse res) { string result; if (res.Headers["Content-Disposition"] != null) { // File name header is set, extract actual file name result = res.Headers["Content-Disposition"].Substring(res.Headers["Content-Disposition"].IndexOf("filename=") + 10).Replace("\"", ""); // Remove excessive `;` at end if present if (result.Substring(result.Length - 1) == ";") { result = result.Substring(0, result.Length - 1); } // Remove file name encoding string at end if present if (result.Contains("; filename*=UTF-8")) { result = result.Substring(0, result.IndexOf(".osz") + 4); } } else { // File name not set by server. Use beatmap id as fallback result = Convert.ToString(beatmapItemImporter.Beatmap.Id) + ".osz"; } result = GlobalVar.PathSanitize(result); // Issue #23: Replace invalid characters return(result); }