diff --git a/Wabbajack.Lib/CerasConfig.cs b/Wabbajack.Lib/CerasConfig.cs index f3706d22..2c618c13 100644 --- a/Wabbajack.Lib/CerasConfig.cs +++ b/Wabbajack.Lib/CerasConfig.cs @@ -29,8 +29,7 @@ namespace Wabbajack.Lib typeof(BA2FileEntryState), typeof(MediaFireDownloader.State), typeof(ArchiveMeta), typeof(PropertyFile), typeof(SteamMeta), typeof(SteamWorkshopDownloader), typeof(SteamWorkshopDownloader.State), typeof(LoversLabDownloader.State), typeof(GameFileSourceDownloader.State), typeof(VectorPlexusDownloader.State), - typeof(DeadlyStreamDownloader.State), typeof(AFKModsDownloader.State) - + typeof(DeadlyStreamDownloader.State), typeof(AFKModsDownloader.State), typeof(TESAllianceDownloader.State) }, }; Config.VersionTolerance.Mode = VersionToleranceMode.Standard; diff --git a/Wabbajack.Lib/Downloaders/AFKModsDownloader.cs b/Wabbajack.Lib/Downloaders/AFKModsDownloader.cs index 213e0b4f..fdeb1385 100644 --- a/Wabbajack.Lib/Downloaders/AFKModsDownloader.cs +++ b/Wabbajack.Lib/Downloaders/AFKModsDownloader.cs @@ -6,7 +6,7 @@ namespace Wabbajack.Lib.Downloaders { #region INeedsDownload public override string SiteName => "AFK Mods"; - public override Uri SiteURL => new Uri("https://www.afkmods.com"); + public override Uri SiteURL => new Uri("https://www.afkmods.com/index.php?"); public override Uri IconUri => new Uri("https://www.afkmods.com/favicon.ico"); #endregion diff --git a/Wabbajack.Lib/Downloaders/AbstractDownloadState.cs b/Wabbajack.Lib/Downloaders/AbstractDownloadState.cs index 5f847d70..bd46e4a9 100644 --- a/Wabbajack.Lib/Downloaders/AbstractDownloadState.cs +++ b/Wabbajack.Lib/Downloaders/AbstractDownloadState.cs @@ -24,7 +24,8 @@ namespace Wabbajack.Lib.Downloaders typeof(SteamWorkshopDownloader.State), typeof(VectorPlexusDownloader.State), typeof(DeadlyStreamDownloader.State), - typeof(AFKModsDownloader.State) + typeof(AFKModsDownloader.State), + typeof(TESAllianceDownloader.State) }; public static Dictionary NameToType { get; set; } public static Dictionary TypeToName { get; set; } diff --git a/Wabbajack.Lib/Downloaders/AbstractIPS4Downloader.cs b/Wabbajack.Lib/Downloaders/AbstractIPS4Downloader.cs index 71cc1d3e..09a94629 100644 --- a/Wabbajack.Lib/Downloaders/AbstractIPS4Downloader.cs +++ b/Wabbajack.Lib/Downloaders/AbstractIPS4Downloader.cs @@ -21,6 +21,7 @@ namespace Wabbajack.Lib.Downloaders { public override string SiteName { get; } public override Uri SiteURL { get; } + public async Task GetDownloaderState(dynamic archiveINI) { Uri url = DownloaderUtils.GetDirectURL(archiveINI); @@ -41,6 +42,9 @@ namespace Wabbajack.Lib.Downloaders public string FileID { get; set; } public string FileName { get; set; } + private static bool IsHTTPS => Downloader.SiteURL.AbsolutePath.StartsWith("https://"); + private static string URLPrefix => IsHTTPS ? "https://" : "http://"; + public override object[] PrimaryKey { get @@ -74,11 +78,11 @@ namespace Wabbajack.Lib.Downloaders string csrfurl; if (FileID == null) { - csrfurl = $"https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download"; + csrfurl = $"{URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}/?do=download"; } else { - csrfurl = $"https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID}"; + csrfurl = $"{URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID}"; } var html = await downloader.AuthedClient.GetStringAsync(csrfurl); @@ -92,9 +96,9 @@ namespace Wabbajack.Lib.Downloaders string url; if (FileID == null) - url = $"https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&confirm=1&t=1&csrfKey={csrfKey}"; + url = $"{URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&confirm=1&t=1&csrfKey={csrfKey}"; else - url = $"https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID}&confirm=1&t=1&csrfKey={csrfKey}"; + url = $"{URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID}&confirm=1&t=1&csrfKey={csrfKey}"; var streamResult = await downloader.AuthedClient.GetAsync(url); @@ -150,7 +154,7 @@ namespace Wabbajack.Lib.Downloaders public override string GetReportEntry(Archive a) { var downloader = (INeedsLogin)GetDownloader(); - return $"* {((INeedsLogin)GetDownloader()).SiteName} - [{a.Name}](https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID})"; + return $"* {((INeedsLogin)GetDownloader()).SiteName} - [{a.Name}]({URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID})"; } public override string[] GetMetaIni() @@ -161,12 +165,12 @@ namespace Wabbajack.Lib.Downloaders return new[] { "[General]", - $"directURL=https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID}&confirm=1&t=1" + $"directURL={URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID}&confirm=1&t=1" }; return new[] { "[General]", - $"directURL=https://{downloader.SiteURL.Host}/files/file/{FileName}" + $"directURL={URLPrefix}{downloader.SiteURL.Host}/files/file/{FileName}" }; } diff --git a/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs b/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs index d8361957..b908fe40 100644 --- a/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs +++ b/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs @@ -21,6 +21,7 @@ namespace Wabbajack.Lib.Downloaders new VectorPlexusDownloader(), new DeadlyStreamDownloader(), new AFKModsDownloader(), + new TESAllianceDownloader(), new HTTPDownloader(), new ManualDownloader(), }; diff --git a/Wabbajack.Lib/Downloaders/TESAllianceDownloader.cs b/Wabbajack.Lib/Downloaders/TESAllianceDownloader.cs new file mode 100644 index 00000000..3885c816 --- /dev/null +++ b/Wabbajack.Lib/Downloaders/TESAllianceDownloader.cs @@ -0,0 +1,20 @@ +using System; + +namespace Wabbajack.Lib.Downloaders +{ + public class TESAllianceDownloader : AbstractIPS4Downloader + { + #region INeedsDownload + public override string SiteName => "TESAlliance"; + public override Uri SiteURL => new Uri("http://tesalliance.org/forums/index.php?"); + public override Uri IconUri => new Uri("http://tesalliance.org/favicon.ico"); + #endregion + + public TESAllianceDownloader() : base(new Uri("http://tesalliance.org/forums/index.php?/login/"), + "tesalliance", "tesalliance.org") + { + } + + public class State : State{} + } +}