From 870092d52da07717ab58f1cec84d93d87e3ea869 Mon Sep 17 00:00:00 2001 From: erri120 Date: Sun, 19 Jul 2020 20:58:40 +0200 Subject: [PATCH] Fixed MediafireDownloader not handling direct links --- .../Downloaders/MediaFireDownloader.cs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs b/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs index 6bb1ad90..d6517dfa 100644 --- a/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs +++ b/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs @@ -50,11 +50,21 @@ namespace Wabbajack.Lib.Downloaders private async Task Resolve() { - var client = new Wabbajack.Lib.Http.Client(); - var body = await client.GetHtmlAsync(Url); - var node = body.DocumentNode.DescendantsAndSelf().First(d => d.HasClass("input") && d.HasClass("popsok") && - d.GetAttributeValue("aria-label", "") == "Download file"); - return new HTTPDownloader.State(node.GetAttributeValue("href", "not-found")); + var client = new Http.Client(); + var result = await client.GetAsync(Url, HttpCompletionOption.ResponseHeadersRead); + if (!result.IsSuccessStatusCode) + return null; + + if (result.Content.Headers.ContentType.MediaType.StartsWith("text/html", + StringComparison.OrdinalIgnoreCase)) + { + var body = await client.GetHtmlAsync(Url); + var node = body.DocumentNode.DescendantsAndSelf().First(d => d.HasClass("input") && d.HasClass("popsok") && + d.GetAttributeValue("aria-label", "") == "Download file"); + return new HTTPDownloader.State(node.GetAttributeValue("href", "not-found")); + } + + return new HTTPDownloader.State(Url); } public override IDownloader GetDownloader()