diff --git a/src/Podsync/Controllers/FeedController.cs b/src/Podsync/Controllers/FeedController.cs index e7ffcda..df7ad3b 100644 --- a/src/Podsync/Controllers/FeedController.cs +++ b/src/Podsync/Controllers/FeedController.cs @@ -8,11 +8,11 @@ using System.Xml.Serialization; using Microsoft.AspNetCore.Mvc; using Podsync.Helpers; using Podsync.Services; -using Podsync.Services.Builder; -using Podsync.Services.Feed; -using Podsync.Services.Feed.Internal; using Podsync.Services.Links; using Podsync.Services.Resolver; +using Podsync.Services.Rss; +using Podsync.Services.Rss.Feed; +using Podsync.Services.Rss.Feed.Internal; using Podsync.Services.Storage; using Shared; @@ -58,7 +58,7 @@ namespace Podsync.Controllers Provider = linkInfo.Provider, LinkType = linkInfo.LinkType, Id = linkInfo.Id, - Quality = request.Quality ?? ResolveType.VideoHigh, + Quality = request.Quality ?? ResolveFormat.VideoHigh, PageSize = request.PageSize ?? Constants.DefaultPageSize }; @@ -66,7 +66,7 @@ namespace Podsync.Controllers var enablePatreonFeatures = User.EnablePatreonFeatures(); if (!enablePatreonFeatures) { - feed.Quality = ResolveType.VideoHigh; + feed.Quality = ResolveFormat.VideoHigh; feed.PageSize = Constants.DefaultPageSize; } diff --git a/src/Podsync/Services/Constants.cs b/src/Podsync/Services/Constants.cs index 56b2682..11b997d 100644 --- a/src/Podsync/Services/Constants.cs +++ b/src/Podsync/Services/Constants.cs @@ -6,7 +6,7 @@ namespace Podsync.Services { public const int DefaultPageSize = 50; - public const ResolveType DefaultFormat = ResolveType.VideoHigh; + public const ResolveFormat DefaultFormat = ResolveFormat.VideoHigh; public static class Patreon { diff --git a/src/Podsync/Services/CreateFeedRequest.cs b/src/Podsync/Services/CreateFeedRequest.cs index 91f83b0..058b2dc 100644 --- a/src/Podsync/Services/CreateFeedRequest.cs +++ b/src/Podsync/Services/CreateFeedRequest.cs @@ -9,7 +9,7 @@ namespace Podsync.Services [Url] public string Url { get; set; } - public ResolveType? Quality { get; set; } + public ResolveFormat? Quality { get; set; } [Range(50, 150)] public int? PageSize { get; set; } diff --git a/src/Podsync/Services/Resolver/IResolverService.cs b/src/Podsync/Services/Resolver/IResolverService.cs index ae5a5ce..c45094c 100644 --- a/src/Podsync/Services/Resolver/IResolverService.cs +++ b/src/Podsync/Services/Resolver/IResolverService.cs @@ -7,6 +7,6 @@ namespace Podsync.Services.Resolver { string Version { get; } - Task Resolve(Uri videoUrl, ResolveType resolveType = ResolveType.VideoHigh); + Task Resolve(Uri videoUrl, ResolveFormat format = ResolveFormat.VideoHigh); } } \ No newline at end of file diff --git a/src/Podsync/Services/Resolver/ResolveType.cs b/src/Podsync/Services/Resolver/ResolveFormat.cs similarity index 80% rename from src/Podsync/Services/Resolver/ResolveType.cs rename to src/Podsync/Services/Resolver/ResolveFormat.cs index 37c27c9..cfaf76c 100644 --- a/src/Podsync/Services/Resolver/ResolveType.cs +++ b/src/Podsync/Services/Resolver/ResolveFormat.cs @@ -1,6 +1,6 @@ namespace Podsync.Services.Resolver { - public enum ResolveType + public enum ResolveFormat { VideoHigh = 0, VideoLow, diff --git a/src/Podsync/Services/Resolver/YtdlWrapper.cs b/src/Podsync/Services/Resolver/YtdlWrapper.cs index 19267e6..1d5c8c6 100644 --- a/src/Podsync/Services/Resolver/YtdlWrapper.cs +++ b/src/Podsync/Services/Resolver/YtdlWrapper.cs @@ -36,9 +36,9 @@ namespace Podsync.Services.Resolver public string Version { get; } - public async Task Resolve(Uri videoUrl, ResolveType resolveType) + public async Task Resolve(Uri videoUrl, ResolveFormat resolveFormat) { - var format = SelectFormat(resolveType); + var format = SelectFormat(resolveFormat); try { @@ -52,20 +52,20 @@ namespace Podsync.Services.Resolver } } - private static string SelectFormat(ResolveType resolveType) + private static string SelectFormat(ResolveFormat format) { - switch (resolveType) + switch (format) { - case ResolveType.VideoHigh: + case ResolveFormat.VideoHigh: return "best[ext=mp4]"; - case ResolveType.VideoLow: + case ResolveFormat.VideoLow: return "worst[ext=mp4]"; - case ResolveType.AudioHigh: + case ResolveFormat.AudioHigh: return "bestaudio[ext=m4a]/worstaudio[ext=m4a]"; - case ResolveType.AudioLow: + case ResolveFormat.AudioLow: return "worstaudio[ext=m4a]/bestaudio[ext=m4a]"; default: - throw new ArgumentOutOfRangeException(nameof(resolveType), "Unsupported format", null); + throw new ArgumentOutOfRangeException(nameof(format), "Unsupported format", null); } } diff --git a/src/Podsync/Services/Builder/CompositeRssBuilder.cs b/src/Podsync/Services/Rss/CompositeRssBuilder.cs similarity index 94% rename from src/Podsync/Services/Builder/CompositeRssBuilder.cs rename to src/Podsync/Services/Rss/CompositeRssBuilder.cs index 5698eac..287c0ce 100644 --- a/src/Podsync/Services/Builder/CompositeRssBuilder.cs +++ b/src/Podsync/Services/Rss/CompositeRssBuilder.cs @@ -5,12 +5,11 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; using Microsoft.Extensions.Logging; -using Podsync.Services.Feed; using Podsync.Services.Links; using Podsync.Services.Storage; using Shared; -namespace Podsync.Services.Builder +namespace Podsync.Services.Rss { // ReSharper disable once ClassNeverInstantiated.Global public class CompositeRssBuilder : RssBuilderBase @@ -35,7 +34,7 @@ namespace Podsync.Services.Builder get { throw new NotSupportedException(); } } - public override Task Query(FeedMetadata feed) + public override Task Query(FeedMetadata feed) { try { diff --git a/src/Podsync/Services/Feed/Channel.cs b/src/Podsync/Services/Rss/Feed/Channel.cs similarity index 98% rename from src/Podsync/Services/Feed/Channel.cs rename to src/Podsync/Services/Rss/Feed/Channel.cs index 6e3f483..caa1865 100644 --- a/src/Podsync/Services/Feed/Channel.cs +++ b/src/Podsync/Services/Rss/Feed/Channel.cs @@ -4,7 +4,7 @@ using System.Xml.Schema; using System.Xml.Serialization; using Shared; -namespace Podsync.Services.Feed +namespace Podsync.Services.Rss.Feed { [XmlRoot("channel")] public class Channel : IXmlSerializable diff --git a/src/Podsync/Services/Feed/Internal/Utf8StringWriter.cs b/src/Podsync/Services/Rss/Feed/Internal/Utf8StringWriter.cs similarity index 78% rename from src/Podsync/Services/Feed/Internal/Utf8StringWriter.cs rename to src/Podsync/Services/Rss/Feed/Internal/Utf8StringWriter.cs index 81678d6..d3ba8b6 100644 --- a/src/Podsync/Services/Feed/Internal/Utf8StringWriter.cs +++ b/src/Podsync/Services/Rss/Feed/Internal/Utf8StringWriter.cs @@ -1,7 +1,7 @@ using System.IO; using System.Text; -namespace Podsync.Services.Feed.Internal +namespace Podsync.Services.Rss.Feed.Internal { public class Utf8StringWriter : StringWriter { diff --git a/src/Podsync/Services/Feed/Item.cs b/src/Podsync/Services/Rss/Feed/Item.cs similarity index 98% rename from src/Podsync/Services/Feed/Item.cs rename to src/Podsync/Services/Rss/Feed/Item.cs index 1cbc801..434c4fb 100644 --- a/src/Podsync/Services/Feed/Item.cs +++ b/src/Podsync/Services/Rss/Feed/Item.cs @@ -4,7 +4,7 @@ using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -namespace Podsync.Services.Feed +namespace Podsync.Services.Rss.Feed { [XmlRoot("item")] public class Item : IXmlSerializable diff --git a/src/Podsync/Services/Feed/Namespaces.cs b/src/Podsync/Services/Rss/Feed/Namespaces.cs similarity index 91% rename from src/Podsync/Services/Feed/Namespaces.cs rename to src/Podsync/Services/Rss/Feed/Namespaces.cs index 1ebec12..f5928cc 100644 --- a/src/Podsync/Services/Feed/Namespaces.cs +++ b/src/Podsync/Services/Rss/Feed/Namespaces.cs @@ -1,4 +1,4 @@ -namespace Podsync.Services.Feed +namespace Podsync.Services.Rss.Feed { public static class Namespaces { diff --git a/src/Podsync/Services/Feed/Rss.cs b/src/Podsync/Services/Rss/Feed/Rss.cs similarity index 97% rename from src/Podsync/Services/Feed/Rss.cs rename to src/Podsync/Services/Rss/Feed/Rss.cs index 8b9f6bd..8d223b0 100644 --- a/src/Podsync/Services/Feed/Rss.cs +++ b/src/Podsync/Services/Rss/Feed/Rss.cs @@ -6,7 +6,7 @@ using System.Xml.Schema; using System.Xml.Serialization; using Shared; -namespace Podsync.Services.Feed +namespace Podsync.Services.Rss.Feed { [XmlRoot("rss")] public class Rss : IXmlSerializable diff --git a/src/Podsync/Services/Builder/IRssBuilder.cs b/src/Podsync/Services/Rss/IRssBuilder.cs similarity index 54% rename from src/Podsync/Services/Builder/IRssBuilder.cs rename to src/Podsync/Services/Rss/IRssBuilder.cs index 7d09f4d..08974b7 100644 --- a/src/Podsync/Services/Builder/IRssBuilder.cs +++ b/src/Podsync/Services/Rss/IRssBuilder.cs @@ -1,16 +1,15 @@ using System.Threading.Tasks; -using Podsync.Services.Feed; using Podsync.Services.Links; using Podsync.Services.Storage; -namespace Podsync.Services.Builder +namespace Podsync.Services.Rss { public interface IRssBuilder { Provider Provider { get; } - Task Query(string feedId); + Task Query(string feedId); - Task Query(FeedMetadata metadata); + Task Query(FeedMetadata metadata); } } \ No newline at end of file diff --git a/src/Podsync/Services/Builder/RssBuilderBase.cs b/src/Podsync/Services/Rss/RssBuilderBase.cs similarity index 74% rename from src/Podsync/Services/Builder/RssBuilderBase.cs rename to src/Podsync/Services/Rss/RssBuilderBase.cs index ec82e0d..548119d 100644 --- a/src/Podsync/Services/Builder/RssBuilderBase.cs +++ b/src/Podsync/Services/Rss/RssBuilderBase.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -using Podsync.Services.Feed; using Podsync.Services.Links; using Podsync.Services.Storage; -namespace Podsync.Services.Builder +namespace Podsync.Services.Rss { public abstract class RssBuilderBase : IRssBuilder { @@ -16,13 +15,13 @@ namespace Podsync.Services.Builder public abstract Provider Provider { get; } - public async Task Query(string feedId) + public async Task Query(string feedId) { var metadata = await _storageService.Load(feedId); return await Query(metadata); } - public abstract Task Query(FeedMetadata metadata); + public abstract Task Query(FeedMetadata metadata); } } \ No newline at end of file diff --git a/src/Podsync/Services/Builder/VimeoRssBuilder.cs b/src/Podsync/Services/Rss/VimeoRssBuilder.cs similarity index 94% rename from src/Podsync/Services/Builder/VimeoRssBuilder.cs rename to src/Podsync/Services/Rss/VimeoRssBuilder.cs index d9ea5cc..928d0e0 100644 --- a/src/Podsync/Services/Builder/VimeoRssBuilder.cs +++ b/src/Podsync/Services/Rss/VimeoRssBuilder.cs @@ -2,12 +2,12 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Podsync.Services.Feed; using Podsync.Services.Links; +using Podsync.Services.Rss.Feed; using Podsync.Services.Storage; using Podsync.Services.Videos.Vimeo; -namespace Podsync.Services.Builder +namespace Podsync.Services.Rss { // ReSharper disable once ClassNeverInstantiated.Global public class VimeoRssBuilder : RssBuilderBase @@ -21,7 +21,7 @@ namespace Podsync.Services.Builder public override Provider Provider { get; } = Provider.Vimeo; - public override async Task Query(FeedMetadata metadata) + public override async Task Query(FeedMetadata metadata) { var linkType = metadata.LinkType; @@ -54,7 +54,7 @@ namespace Podsync.Services.Builder throw new NotSupportedException("URL type is not supported"); } - var rss = new Rss + var rss = new Feed.Rss { Channels = new[] { channel } }; diff --git a/src/Podsync/Services/Builder/YouTubeRssBuilder.cs b/src/Podsync/Services/Rss/YouTubeRssBuilder.cs similarity index 88% rename from src/Podsync/Services/Builder/YouTubeRssBuilder.cs rename to src/Podsync/Services/Rss/YouTubeRssBuilder.cs index 694031a..8bb3033 100644 --- a/src/Podsync/Services/Builder/YouTubeRssBuilder.cs +++ b/src/Podsync/Services/Rss/YouTubeRssBuilder.cs @@ -1,15 +1,15 @@ using System; using System.Linq; using System.Threading.Tasks; -using Podsync.Services.Feed; using Podsync.Services.Links; using Podsync.Services.Resolver; +using Podsync.Services.Rss.Feed; using Podsync.Services.Storage; using Podsync.Services.Videos.YouTube; -using Channel = Podsync.Services.Feed.Channel; +using Channel = Podsync.Services.Rss.Feed.Channel; using Video = Podsync.Services.Videos.YouTube.Video; -namespace Podsync.Services.Builder +namespace Podsync.Services.Rss { public class YouTubeRssBuilder : RssBuilderBase { @@ -22,7 +22,7 @@ namespace Podsync.Services.Builder public override Provider Provider { get; } = Provider.YouTube; - public override async Task Query(FeedMetadata metadata) + public override async Task Query(FeedMetadata metadata) { if (metadata.Provider != Provider.YouTube) { @@ -57,7 +57,7 @@ namespace Podsync.Services.Builder channel.Items = videos.Select(youtubeVideo => MakeItem(youtubeVideo, metadata)).ToArray(); - var rss = new Rss + var rss = new Feed.Rss { Channels = new[] { channel } }; @@ -117,14 +117,14 @@ namespace Podsync.Services.Builder }; } - private static string GetContentType(ResolveType resolveType) + private static string GetContentType(ResolveFormat format) { - if (resolveType == ResolveType.VideoHigh || resolveType == ResolveType.VideoLow) + if (format == ResolveFormat.VideoHigh || format == ResolveFormat.VideoLow) { return "video/mp4"; } - if (resolveType == ResolveType.AudioHigh || resolveType == ResolveType.AudioLow) + if (format == ResolveFormat.AudioHigh || format == ResolveFormat.AudioLow) { return "audio/mp4"; } diff --git a/src/Podsync/Services/Storage/FeedMetadata.cs b/src/Podsync/Services/Storage/FeedMetadata.cs index 8457cb4..5075054 100644 --- a/src/Podsync/Services/Storage/FeedMetadata.cs +++ b/src/Podsync/Services/Storage/FeedMetadata.cs @@ -11,7 +11,7 @@ namespace Podsync.Services.Storage public string Id { get; set; } - public ResolveType Quality { get; set; } + public ResolveFormat Quality { get; set; } public int PageSize { get; set; } diff --git a/src/Podsync/Startup.cs b/src/Podsync/Startup.cs index 73566f5..ea91f38 100644 --- a/src/Podsync/Startup.cs +++ b/src/Podsync/Startup.cs @@ -11,10 +11,10 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Podsync.Helpers; using Podsync.Services; -using Podsync.Services.Builder; using Podsync.Services.Links; using Podsync.Services.Patreon; using Podsync.Services.Resolver; +using Podsync.Services.Rss; using Podsync.Services.Storage; using Podsync.Services.Videos.Vimeo; using Podsync.Services.Videos.YouTube; diff --git a/test/Podsync.Tests/Controllers/FeedControllerTests.cs b/test/Podsync.Tests/Controllers/FeedControllerTests.cs index ea2a070..6552915 100644 --- a/test/Podsync.Tests/Controllers/FeedControllerTests.cs +++ b/test/Podsync.Tests/Controllers/FeedControllerTests.cs @@ -23,7 +23,7 @@ namespace Podsync.Tests.Controllers [InlineData("http://youtube.com", null, 0)] [InlineData("http://youtube.com", null, 25)] [InlineData("http://youtube.com", null, 151)] - public async Task ValidateCreateTest(string url, ResolveType? quality, int? pageSize) + public async Task ValidateCreateTest(string url, ResolveFormat? quality, int? pageSize) { var feed = new CreateFeedRequest { @@ -42,7 +42,7 @@ namespace Podsync.Tests.Controllers var feed = new CreateFeedRequest { Url = "https://www.youtube.com/channel/UCKy1dAqELo0zrOtPkf0eTMw", - Quality = ResolveType.AudioLow, + Quality = ResolveFormat.AudioLow, }; var response = await Client.PostAsync("/feed/create", MakeHttpContent(feed)); diff --git a/test/Podsync.Tests/Services/Patreon/PatreonApiTests.cs b/test/Podsync.Tests/Services/Patreon/PatreonApiTests.cs index f5be818..5d8ca36 100644 --- a/test/Podsync.Tests/Services/Patreon/PatreonApiTests.cs +++ b/test/Podsync.Tests/Services/Patreon/PatreonApiTests.cs @@ -10,7 +10,7 @@ namespace Podsync.Tests.Services.Patreon private Tokens Tokens => Configuration.CreatorTokens; - [Fact] + [Fact(Skip = "Run manually with access token")] public async Task FetchProfileTest() { var user = await _api.FetchUserAndPledges(Tokens); diff --git a/test/Podsync.Tests/Services/Resolver/YtdlWrapperTests.cs b/test/Podsync.Tests/Services/Resolver/YtdlWrapperTests.cs index f648de6..50e4d53 100644 --- a/test/Podsync.Tests/Services/Resolver/YtdlWrapperTests.cs +++ b/test/Podsync.Tests/Services/Resolver/YtdlWrapperTests.cs @@ -45,7 +45,7 @@ namespace Podsync.Tests.Services.Resolver [Fact] public async Task ResolveOutputTest() { - var downloadUrl = await _resolver.Resolve(new Uri("https://www.youtube.com/watch?v=-csRxRj_zcw&t=45s"), ResolveType.AudioHigh); + var downloadUrl = await _resolver.Resolve(new Uri("https://www.youtube.com/watch?v=-csRxRj_zcw&t=45s"), ResolveFormat.AudioHigh); Assert.True(downloadUrl.IsAbsoluteUri); } } diff --git a/test/Podsync.Tests/Services/Feed/FeedSerializationTests.cs b/test/Podsync.Tests/Services/Rss/Feed/FeedSerializationTests.cs similarity index 94% rename from test/Podsync.Tests/Services/Feed/FeedSerializationTests.cs rename to test/Podsync.Tests/Services/Rss/Feed/FeedSerializationTests.cs index 47a0842..ea3edaa 100644 --- a/test/Podsync.Tests/Services/Feed/FeedSerializationTests.cs +++ b/test/Podsync.Tests/Services/Rss/Feed/FeedSerializationTests.cs @@ -1,10 +1,10 @@ using System; using System.IO; using System.Xml.Serialization; -using Podsync.Services.Feed; +using Podsync.Services.Rss.Feed; using Xunit; -namespace Podsync.Tests.Services.Feed +namespace Podsync.Tests.Services.Rss.Feed { public class FeedSerializationTests { @@ -13,7 +13,7 @@ namespace Podsync.Tests.Services.Feed [Fact] public void SerializeFeedTest() { - var feed = new Rss(); + var feed = new Podsync.Services.Rss.Feed.Rss(); var item = new Item { @@ -50,7 +50,7 @@ namespace Podsync.Tests.Services.Feed channel }; - var serializer = new XmlSerializer(typeof(Rss)); + var serializer = new XmlSerializer(typeof(Podsync.Services.Rss.Feed.Rss)); string body; using (var writer = new StringWriter()) diff --git a/test/Podsync.Tests/Services/Builder/VimeoRssBuilderTests.cs b/test/Podsync.Tests/Services/Rss/VimeoRssBuilderTests.cs similarity index 96% rename from test/Podsync.Tests/Services/Builder/VimeoRssBuilderTests.cs rename to test/Podsync.Tests/Services/Rss/VimeoRssBuilderTests.cs index 276fc42..b4480e4 100644 --- a/test/Podsync.Tests/Services/Builder/VimeoRssBuilderTests.cs +++ b/test/Podsync.Tests/Services/Rss/VimeoRssBuilderTests.cs @@ -2,13 +2,13 @@ using System.Linq; using System.Threading.Tasks; using Moq; -using Podsync.Services.Builder; using Podsync.Services.Links; +using Podsync.Services.Rss; using Podsync.Services.Storage; using Podsync.Services.Videos.Vimeo; using Xunit; -namespace Podsync.Tests.Services.Builder +namespace Podsync.Tests.Services.Rss { public class VimeoRssBuilderTests : TestBase { diff --git a/test/Podsync.Tests/Services/Builder/YouTubeRssBuilderTests.cs b/test/Podsync.Tests/Services/Rss/YouTubeRssBuilderTests.cs similarity index 96% rename from test/Podsync.Tests/Services/Builder/YouTubeRssBuilderTests.cs rename to test/Podsync.Tests/Services/Rss/YouTubeRssBuilderTests.cs index 42dbb98..a2fcb87 100644 --- a/test/Podsync.Tests/Services/Builder/YouTubeRssBuilderTests.cs +++ b/test/Podsync.Tests/Services/Rss/YouTubeRssBuilderTests.cs @@ -2,13 +2,13 @@ using System.Linq; using System.Threading.Tasks; using Moq; -using Podsync.Services.Builder; using Podsync.Services.Links; +using Podsync.Services.Rss; using Podsync.Services.Storage; using Podsync.Services.Videos.YouTube; using Xunit; -namespace Podsync.Tests.Services.Builder +namespace Podsync.Tests.Services.Rss { public class YouTubeRssBuilderTests : TestBase {