public static string DoConvert(HttpContext context) { _fileName = Path.GetFileName(context.Request["filename"]); var extension = (Path.GetExtension(_fileName) ?? "").Trim('.'); var internalExtension = FileType.GetInternalExtension(_fileName).Trim('.'); if (ConvertExts.Contains("." + extension) && !string.IsNullOrEmpty(internalExtension)) { var key = ServiceConverter.GenerateRevisionId(FileUri(_fileName, true)); string newFileUri; var result = ServiceConverter.GetConvertedUri(FileUri(_fileName, true), extension, internalExtension, key, true, out newFileUri); if (result != 100) { return("{ \"step\" : \"" + result + "\", \"filename\" : \"" + _fileName + "\"}"); } var fileName = GetCorrectName(Path.GetFileNameWithoutExtension(_fileName) + "." + internalExtension); var req = (HttpWebRequest)WebRequest.Create(newFileUri); // hack. http://ubuntuforums.org/showthread.php?t=1841740 if (IsMono) { ServicePointManager.ServerCertificateValidationCallback += (s, ce, ca, p) => true; } using (var stream = req.GetResponse().GetResponseStream()) { if (stream == null) { throw new Exception("Stream is null"); } const int bufferSize = 4096; using (var fs = File.Open(StoragePath(fileName, null), FileMode.Create)) { var buffer = new byte[bufferSize]; int readed; while ((readed = stream.Read(buffer, 0, bufferSize)) != 0) { fs.Write(buffer, 0, readed); } } } var storagePath = StoragePath(_fileName, null); var histDir = HistoryDir(storagePath); File.Delete(storagePath); if (Directory.Exists(histDir)) { Directory.Delete(histDir, true); } _fileName = fileName; DocEditor.CreateMeta(_fileName, context.Request.Cookies.GetOrDefault("uid", "uid-1"), context.Request.Cookies.GetOrDefault("uname", "John Smith"), null); } return("{ \"filename\" : \"" + _fileName + "\"}"); }