internal ISnapAppChannelReleases GetReleases([NotNull] SnapApp snapApp, [NotNull] string channelName) { if (snapApp == null) { throw new ArgumentNullException(nameof(snapApp)); } if (channelName == null) { throw new ArgumentNullException(nameof(channelName)); } var channel = snapApp.Channels.SingleOrDefault(x => x.Name == channelName); if (channel == null) { throw new Exception($"Unknown channel: {channelName}"); } var snapAppReleases = GetReleases(snapApp); var snapReleasesForChannel = snapAppReleases.Where(x => x.Channels.Contains(channelName)).Select(x => x); return(new SnapAppChannelReleases(snapApp, channel, snapReleasesForChannel)); }
internal ISnapAppReleases GetMostRecentReleases([NotNull] SnapApp snapApp, [NotNull] Func <SnapRelease, bool> filterFunc) { if (snapApp == null) { throw new ArgumentNullException(nameof(snapApp)); } if (filterFunc == null) { throw new ArgumentNullException(nameof(filterFunc)); } var snapAppReleases = Releases.Where(x => x.Id == snapApp.Id).ToList(); var mostRecentRelease = snapAppReleases.LastOrDefault(); if (mostRecentRelease == null) { return(new SnapAppReleases(snapApp, new List <SnapRelease>())); } var mostRecentReleaseForRid = snapAppReleases .Where(x => x.Version == mostRecentRelease.Version && filterFunc(x)).ToList(); return(new SnapAppReleases(snapApp, mostRecentReleaseForRid)); }