IContentSource CrawlObject(IContentSource content) { var match = Regex.Match(content.ToString(), Pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase); if (match == null || match.Groups.Count <= MatchGroup) { return(GetDefault(string.Format("Could not match pattern {0}", Pattern))); } var plainContent = new PlainContent(); plainContent.ContentList.Add(match.Groups[MatchGroup].Value); return(plainContent); }
protected IContentSource GetDefault(string errMessage = null) { if (DefaultValue != null) { var content = new PlainContent(); content.ContentList.Add(DefaultValue); return(content); } if (ThrowIfNotFound) { throw new ArgumentException(errMessage); } return(null); }
public static string Encrypt(string path, string password, bool replaceFilename = false, Action<double, string> statusCallback = null) { if (!File.Exists(path)) throw new FileNotFoundException(); SetStatusEncryption(statusCallback, Status.ReadFile); var bytes = File.ReadAllBytes(path); var iv = CryptoProvider.CreateIV(); var plainContent = new PlainContent { Data = bytes, Filename = Path.GetFileName(path) }; SetStatusEncryption(statusCallback, Status.EncryptData); var encryptedBytes = CryptoProvider.EncryptData(plainContent.GetBytes(), iv, password); SetStatusEncryption(statusCallback, Status.CreateHmac); var hmac = CryptoProvider.CreateHmac(iv, encryptedBytes, password); var newPath = CreateEnryptedFilename(path, replaceFilename); var container = new ContainerV1(iv, encryptedBytes, hmac); SetStatusEncryption(statusCallback, Status.WriteAllBytes); File.WriteAllBytes(newPath, container.GetBytes()); SetStatusEncryption(statusCallback, Status.Done); return newPath; }
public static PlainContent FromBytes(byte[] decryptedBytes) { var filenameLength = BitConverter.ToInt32(decryptedBytes.Take(4).ToArray(), 0); var result = new PlainContent { Filename = Encoding.UTF8.GetString(decryptedBytes.Skip(4).Take(filenameLength).ToArray()), Data = decryptedBytes.Skip(4 + filenameLength).ToArray() }; return result; }