public static FileInfoTypes Type(this IDataItem fileInfo) { if (fileInfo == null) { throw new ArgumentNullException("fileInfo"); } if (!fileInfo.IsAvailable) { return(FileInfoTypes.NonExisting); } if (fileInfo.IsFolder) { return(FileInfoTypes.Folder); } if (fileInfo.IsEncrypted()) { return(FileInfoTypes.EncryptedFile); } if (New <FileFilter>().IsEncryptable(fileInfo)) { return(FileInfoTypes.EncryptableFile); } return(FileInfoTypes.OtherFile); }
public bool IsEncryptable(IDataItem fileInfo) { if (fileInfo == null) { throw new ArgumentNullException("fileInfo"); } foreach (Regex filter in pathFilters) { if (filter.IsMatch(fileInfo.FullName)) { return(false); } } return(!fileInfo.IsEncrypted()); }
/// <summary> /// Create a file name based on an existing, but convert the file name to the pattern used by /// AxCrypt for encrypted files. The original must not already be in that form. /// </summary> /// <param name="fileInfo">A file name representing a file that is not encrypted</param> /// <returns>A corresponding file name representing the encrypted version of the original</returns> /// <exception cref="InternalErrorException">Can't get encrypted name for a file that already has the encrypted extension.</exception> public static IDataStore CreateEncryptedName(this IDataItem fullName) { if (fullName == null) { throw new ArgumentNullException("fullName"); } if (fullName.IsEncrypted()) { throw new InternalErrorException("Can't get encrypted name for a file that cannot be encrypted."); } string encryptedName = fullName.FullName.CreateEncryptedName(); return(New <IDataStore>(encryptedName)); }
private async Task HandleWatchedFolderChangesAsync(WatchedFolder watchedFolder, IDataItem dataItem) { if (watchedFolder.Path == dataItem.FullName && !dataItem.IsAvailable) { await RemoveAndDecryptWatchedFolder(dataItem); await Save(); return; } if (!dataItem.IsEncrypted()) { return; } if (IsExisting(dataItem)) { return; } await RemoveDeletedActiveFile(dataItem); }