public static bool TryParse(string fileContents, out PtrFile file) { file = new PtrFile(); if (fileContents.StartsWith("MSG: ")) { file.Message = fileContents.Substring(5); } else if (fileContents.StartsWith("PATH:")) { file.Path = fileContents.Substring(5); } else { file = null; return(false); } return(true); }
public static bool TryParse(string fileContents, out PtrFile file) { file = new PtrFile(); if (fileContents.StartsWith("MSG: ")) { file.Message = fileContents.Substring(5); } else if (fileContents.StartsWith("PATH:")) { file.Path = fileContents.Substring(5); } else { file = null; return false; } return true; }
private bool TryGetFileLocal(string fileName, string indexString, SymStoreResult result, out Stream fileData) { fileData = null; string errorMessage = null; Uri request = new Uri(StoreRootAddress, fileName + "/" + indexString + "/" + fileName); //We could do better and actually calculate the backing path if (result.OriginalPath == null) { result.OriginalPath = request.ToString(); } if (TryGetDataForUri(request, out fileData, out errorMessage)) { result.CachedPath = request.AbsolutePath; result.MessageLog.Add("Retrieved " + request); return(true); } else { result.MessageLog.Add(request.ToString() + " [" + errorMessage + "]"); } string fileNameUnderBar = fileName.Substring(0, fileName.Length - 1) + "_"; Uri requestUnderBar = new Uri(StoreRootAddress, fileName + "/" + indexString + "/" + fileNameUnderBar); Stream compressedFileData = null; if (TryGetDataForUri(requestUnderBar, out compressedFileData, out errorMessage)) { fileData = CabUnpacker.Unpack(compressedFileData); result.CachedPath = requestUnderBar.AbsolutePath; result.MessageLog.Add("Retrieved " + requestUnderBar); return(true); } else { result.MessageLog.Add(requestUnderBar.ToString() + " [" + errorMessage + "]"); } Uri requestPtr = new Uri(StoreRootAddress, fileName + "/" + indexString + "/file.ptr"); Stream ptrFileData; PtrFile ptr; if (!TryGetDataForUri(requestPtr, out ptrFileData, out errorMessage)) { result.MessageLog.Add(requestPtr.ToString() + " [" + errorMessage + "]"); return(false); } else if (!PtrFile.TryParse(new StreamReader(ptrFileData).ReadToEnd(), out ptr)) { result.MessageLog.Add(requestPtr.ToString() + " [Unable to parse]"); return(false); } else { result.MessageLog.Add(requestPtr.ToString() + " [Redirecting search]"); result.MessageLog.Add(" Path: " + ptr.Path); if (!string.IsNullOrWhiteSpace(ptr.Message)) { result.MessageLog.Add(" Msg: " + ptr.Message); } } try { fileData = File.OpenRead(ptr.Path); result.CachedPath = ptr.Path; } catch (IOException e) { result.MessageLog.Add(ptr.Path + " [" + e.ToString() + "]"); return(false); } return(true); }