public DatePathFilter(FileStoreFilterV1 filter) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } _start = filter.TimestampRangeStart ?? throw new ArgumentException("Start was null", nameof(filter)); _end = filter.TimestampRangeEnd ?? throw new ArgumentException("End was null", nameof(filter)); }
public void Setup() { _input = new FileStoreFilterV1 { TimestampRangeStart = new DateTimeOffset(2020, 1, 1, 0, 0, 0, 0, TimeSpan.Zero), TimestampRangeEnd = new DateTimeOffset(2020, 12, 1, 0, 0, 0, 0, TimeSpan.Zero) }; ClassInTest = new DatePathFilter(_input); }
public bool TryParseEventDateWithFilter(FileStoreFilterV1 filter, out DateTimeOffset timestamp) { TryGetEvent(EventId.NewDocument, out var newDocumentEvent); if (!DateTimeOffset.TryParse(newDocumentEvent.PropertyOrDefault("Timestamp"), out timestamp)) { return(false); } return(timestamp >= filter.TimestampRangeStart && timestamp <= filter.TimestampRangeEnd); }
public bool TryParseFileTypeWithFilter(FileStoreFilterV1 filter, out FileType fileType) { TryGetEvent(EventId.FileTypeDetected, out var fileTypeDetectedEvent); fileType = fileTypeDetectedEvent.PropertyOrDefault <FileType>("FileType") ?? FileType.Unknown; if (filter.SearchFileType) { return(filter.FileTypes.Contains(fileType)); } return(true); }
public bool TryParsePolicyIdWithFilter(FileStoreFilterV1 filter, out Guid policyId) { TryGetEvent(EventId.NewDocument, out var newDocumentEvent); Guid.TryParse(newDocumentEvent.PropertyOrDefault("PolicyId"), out policyId); if (filter.SearchPolicyIds) { return(filter.PolicyIds.Contains(policyId)); } return(true); }
public bool TryParseRiskWithFilter(FileStoreFilterV1 filter, out Risk risk) { TryGetEvent(EventId.RebuildCompleted, out var rebuildEvent); TryGetEvent(EventId.NCFSCompletedEvent, out var ncfsEvent); var gwOutcome = rebuildEvent.PropertyOrDefault <GwOutcome>("GwOutcome") ?? GwOutcome.Unknown; var ncfsOutcome = ncfsEvent.PropertyOrDefault <NcfsOutcome>("NCFSOutcome") ?? NcfsOutcome.Unknown; risk = RiskAssessment.DetermineRisk(ncfsOutcome, gwOutcome); if (filter.SearchRisk) { return(filter.Risks.Contains(risk)); } return(true); }
private async IAsyncEnumerable <GetTransactionsResponseV1File> HandleShare( IFileShare share, FileStoreFilterV1 filter, [EnumeratorCancellation] CancellationToken cancellationToken) { await foreach (var fileDirectory in share.ListAsync(new DatePathFilter(filter), cancellationToken)) { if (filter.AllFileIdsFound) { yield break; } var eventFile = await DownloadFile(share, fileDirectory, cancellationToken); if (!eventFile.TryParseEventDateWithFilter(filter, out var timestamp)) { continue; } if (!eventFile.TryParseFileIdWithFilter(filter, out var fileId)) { continue; } if (!eventFile.TryParseFileTypeWithFilter(filter, out var fileType)) { continue; } if (!eventFile.TryParseRiskWithFilter(filter, out var risk)) { continue; } if (!eventFile.TryParsePolicyIdWithFilter(filter, out var policyId)) { continue; } yield return(new GetTransactionsResponseV1File { ActivePolicyId = policyId, DetectionFileType = fileType, FileId = fileId, Risk = risk, Timestamp = timestamp, Directory = fileDirectory }); } }
public bool TryParseFileIdWithFilter(FileStoreFilterV1 filter, out Guid fileId) { TryGetEvent(EventId.NewDocument, out var newDocumentEvent); if (!Guid.TryParse(newDocumentEvent.PropertyOrDefault("FileId"), out fileId)) { return(false); } if (filter.SearchFileIds) { if (!filter.FileIds.Contains(fileId)) { return(false); } filter.FileIds.Remove(fileId); if (!filter.FileIds.Any()) { filter.AllFileIdsFound = true; } } return(true); }