< Summary

Information
Class: GistBackend.Utils.SyndicationItemExtensions
Assembly: GistBackend
File(s): /home/runner/work/the-gist-of-it-sec/the-gist-of-it-sec/backend/GistBackend/Utils/SyndicationItemExtensions.cs
Line coverage
100%
Covered lines: 11
Uncovered lines: 0
Coverable lines: 11
Total lines: 37
Line coverage: 100%
Branch coverage
70%
Covered branches: 7
Total branches: 10
Branch coverage: 70%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExtractAuthor(...)62.5%88100%
ExtractUpdated(...)100%22100%
ExtractUrl(...)100%11100%
ExtractCategories(...)100%11100%

File(s)

/home/runner/work/the-gist-of-it-sec/the-gist-of-it-sec/backend/GistBackend/Utils/SyndicationItemExtensions.cs

#LineLine coverage
 1using System.ServiceModel.Syndication;
 2
 3namespace GistBackend.Utils;
 4
 5public static class SyndicationItemExtensions {
 6    extension(SyndicationItem item)
 7    {
 8        public string ExtractAuthor()
 9        {
 18710            if (item.Authors is null) return "";
 53611            if (item.Authors.Count != 0) return string.Join(", ", item.Authors.Select(person => person.ExtractName()));
 1512            return item.ElementExtensions
 1513                .Where(ext => ext.OuterName == "creator")
 1514                .Select(ext => ext.GetObject<string>())
 1515                .FirstOrDefault()?.Trim() ?? "";
 16        }
 17
 18        public DateTime ExtractUpdated() =>
 18719            item.LastUpdatedTime > DateTimeOffset.UnixEpoch
 18720                ? item.LastUpdatedTime.UtcDateTime
 18721                : item.PublishDate.UtcDateTime;
 22
 37423        public Uri ExtractUrl() => item.Links.First(link => link.RelationshipType != "enclosure").Uri;
 24
 25        public IEnumerable<string> ExtractCategories() =>
 21326            item.Categories.Select(category => category.Name.Trim());
 27    }
 28}
 29
 30public static class SyndicationPersonExtensions {
 31    public static string ExtractName(this SyndicationPerson person) =>
 32        string.IsNullOrWhiteSpace(person.Name)
 33            ? string.IsNullOrWhiteSpace(person.Email)
 34                ? ""
 35                : person.Email.Trim().Replace("(", "").Replace(")", "")
 36            : person.Name.Trim();
 37}