From dbd04999bf84be876e3e5ceb15d5fc51b25403d4 Mon Sep 17 00:00:00 2001 From: exsersewo Date: Tue, 25 Sep 2018 16:59:49 +0100 Subject: [PATCH] Add Tests, Add UserAgent, Upgrade Protocol Support to HTTP1.1 & remove whitespace. Plus VerBump --- Booru.Net.Tests/Booru.Net.Tests.csproj | 12 ++++++++++++ Booru.Net.Tests/Program.cs | 20 ++++++++++++++++++++ Booru.Net.sln | 8 +++++++- Booru.Net/Booru.Net.csproj | 1 + Booru.Net/Client.cs | 19 ++++++++++++++++++- Booru.Net/Models/Boards/E621Image.cs | 2 +- Booru.Net/Models/Boards/GelbooruImage.cs | 6 +++--- Booru.Net/WebRequest.cs | 9 ++++++--- 8 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 Booru.Net.Tests/Booru.Net.Tests.csproj create mode 100644 Booru.Net.Tests/Program.cs diff --git a/Booru.Net.Tests/Booru.Net.Tests.csproj b/Booru.Net.Tests/Booru.Net.Tests.csproj new file mode 100644 index 0000000..51ab5c4 --- /dev/null +++ b/Booru.Net.Tests/Booru.Net.Tests.csproj @@ -0,0 +1,12 @@ + + + + Exe + netcoreapp2.1 + + + + + + + diff --git a/Booru.Net.Tests/Program.cs b/Booru.Net.Tests/Program.cs new file mode 100644 index 0000000..939686d --- /dev/null +++ b/Booru.Net.Tests/Program.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; +using System; + +namespace Booru.Net.Tests +{ + class Program + { + static void Main(string[] args) => StartAsync().GetAwaiter().GetResult(); + + + static async Task StartAsync() + { + var BooruClient = new BooruClient(); + + var posts = await BooruClient.GetE621ImagesAsync("nintendo"); + + Console.ReadLine(); + } + } +} diff --git a/Booru.Net.sln b/Booru.Net.sln index 78bbf4d..735b899 100644 --- a/Booru.Net.sln +++ b/Booru.Net.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27703.2026 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Booru.Net", "Booru.Net\Booru.Net.csproj", "{BC612FDE-FC2D-42D8-AD7F-988874B6A839}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Booru.Net", "Booru.Net\Booru.Net.csproj", "{BC612FDE-FC2D-42D8-AD7F-988874B6A839}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Booru.Net.Tests", "Booru.Net.Tests\Booru.Net.Tests.csproj", "{747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {BC612FDE-FC2D-42D8-AD7F-988874B6A839}.Debug|Any CPU.Build.0 = Debug|Any CPU {BC612FDE-FC2D-42D8-AD7F-988874B6A839}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC612FDE-FC2D-42D8-AD7F-988874B6A839}.Release|Any CPU.Build.0 = Release|Any CPU + {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Booru.Net/Booru.Net.csproj b/Booru.Net/Booru.Net.csproj index ee2c6e1..a6b4b81 100644 --- a/Booru.Net/Booru.Net.csproj +++ b/Booru.Net/Booru.Net.csproj @@ -23,6 +23,7 @@ Yande.re booru imageboard api wrapper https://github.com/exsersewo/Booru.Net/blob/master/LICENSE true + 1.0.0.2 diff --git a/Booru.Net/Client.cs b/Booru.Net/Client.cs index 576925c..60f9d39 100644 --- a/Booru.Net/Client.cs +++ b/Booru.Net/Client.cs @@ -121,5 +121,22 @@ namespace Booru.Net } else return null; } - } + + public async Task> GetSafebooruImagesAsync(params string[] tags) + => await GetSafebooruImagesAsync(tags.AsEnumerable()); + public async Task> GetRule34ImagesAsync(params string[] tags) + => await GetRule34ImagesAsync(tags.AsEnumerable()); + public async Task> GetRealBooruImagesAsync(params string[] tags) + => await GetRealBooruImagesAsync(tags.AsEnumerable()); + public async Task> GetDanbooruImagesAsync(params string[] tags) + => await GetDanbooruImagesAsync(tags.AsEnumerable()); + public async Task> GetGelbooruImagesAsync(params string[] tags) + => await GetGelbooruImagesAsync(tags.AsEnumerable()); + public async Task> GetKonaChanImagesAsync(params string[] tags) + => await GetKonaChanImagesAsync(tags.AsEnumerable()); + public async Task> GetE621ImagesAsync(params string[] tags) + => await GetE621ImagesAsync(tags.AsEnumerable()); + public async Task> GetYandereImagesAsync(params string[] tags) + => await GetYandereImagesAsync(tags.AsEnumerable()); + } } diff --git a/Booru.Net/Models/Boards/E621Image.cs b/Booru.Net/Models/Boards/E621Image.cs index e525753..1fda44a 100644 --- a/Booru.Net/Models/Boards/E621Image.cs +++ b/Booru.Net/Models/Boards/E621Image.cs @@ -2,6 +2,6 @@ { public class E621Image : GelbooruImage { - public override string PostUrl { get { return "https://e621.net/post/show/" + ID; } } + public override string PostUrl { get { return "https://e621.net/post/show/" + ID; } } } } diff --git a/Booru.Net/Models/Boards/GelbooruImage.cs b/Booru.Net/Models/Boards/GelbooruImage.cs index 4bb245a..2b83442 100644 --- a/Booru.Net/Models/Boards/GelbooruImage.cs +++ b/Booru.Net/Models/Boards/GelbooruImage.cs @@ -7,12 +7,12 @@ namespace Booru.Net { [JsonProperty("directory")] public string Directory { get; set; } - + [JsonProperty("tags")] private string Ptags { get; set; } - + public IReadOnlyList Tags { get { return Ptags.Split(' '); } } - + public virtual string PostUrl { get { return "https://gelbooru.com/index.php?page=post&s=view&id=" + ID; } } } } \ No newline at end of file diff --git a/Booru.Net/WebRequest.cs b/Booru.Net/WebRequest.cs index 1c4fd8b..0a1b0e7 100644 --- a/Booru.Net/WebRequest.cs +++ b/Booru.Net/WebRequest.cs @@ -2,6 +2,7 @@ using System.Net; using System.Threading.Tasks; using System.IO; +using System.Reflection; namespace Booru.Net { @@ -9,12 +10,14 @@ namespace Booru.Net { public static HttpWebRequest CreateWebRequest(Uri uri) { - var cli = (HttpWebRequest)System.Net.WebRequest.Create(uri); + var ver = Assembly.GetExecutingAssembly().GetName().Version; - cli.AllowAutoRedirect = true; + var cli = (HttpWebRequest)System.Net.WebRequest.Create(uri); + cli.UserAgent = "Mozilla/5.0 Booru.Net/{VERSION} +https://github.com/exsersewo/Booru.Net".Replace("{VERSION}", $"{ver.Major}.{ver.MajorRevision}.{ver.Minor}.{ver.MinorRevision}"); + cli.AllowAutoRedirect = true; cli.KeepAlive = false; cli.Timeout = 20000; - cli.ProtocolVersion = HttpVersion.Version10; + cli.ProtocolVersion = HttpVersion.Version11; return cli; }