/// <summary> /// Gets DMARC failures summarized by IpAddress /// </summary> /// <param name="aggregateReport"></param> /// <returns>IEnumerable of <see cref="SourceIpSummary"/></returns> public static IEnumerable <SourceIpSummary> SummarizeFailuresByIpAddress(this AggregateReport aggregateReport) { var failedRecords = aggregateReport.GetFailureRecords(); return(failedRecords.GroupBy(r => r.Row.SourceIp, r => r.Row.Count, (s, c) => new SourceIpSummary { IpAddress = IPAddress.Parse(s), Count = c.Sum() })); }
/// <summary> /// Gets DMARC failures summarized by message From header. /// </summary> /// <param name="aggregateReport"></param> /// <returns>IEnumerable of <see cref="FromHeaderSummary"/></returns> public static IEnumerable <FromHeaderSummary> SummarizeFailuresByHeaderFrom(this AggregateReport aggregateReport) { var failedRecords = aggregateReport.GetFailureRecords(); return(failedRecords.GroupBy(r => r.Identifiers.HeaderFrom, r => r.Row.Count, (h, c) => new FromHeaderSummary { HeaderFrom = h, Count = c.Sum() })); }
/// <summary> /// Gets the total number of failures in this report. /// </summary> /// <param name="aggregateReport"></param> /// <returns>Count of failures.</returns> public static int GetFailureCount(this AggregateReport aggregateReport) { return(aggregateReport.GetFailureRecords().Sum(r => r.Row.Count)); }