mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Can now get meta.ini data from a download state
This commit is contained in:
parent
bac5e958bf
commit
5393ed4a84
@ -881,7 +881,7 @@ namespace Wabbajack.Common
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Roundtrips the value throught the JSON routines
|
||||
/// Roundtrips the value through the JSON routines
|
||||
/// </summary>
|
||||
/// <typeparam name="TV"></typeparam>
|
||||
/// <typeparam name="TR"></typeparam>
|
||||
|
@ -80,5 +80,6 @@ namespace Wabbajack.Lib.Downloaders
|
||||
public abstract IDownloader GetDownloader();
|
||||
|
||||
public abstract string GetReportEntry(Archive a);
|
||||
public abstract string[] GetMetaIni();
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,15 @@ namespace Wabbajack.Lib.Downloaders
|
||||
public string FileID { get; set; }
|
||||
public string FileName { get; set; }
|
||||
|
||||
public override object[] PrimaryKey { get => new object[] {FileID, FileName}; }
|
||||
public override object[] PrimaryKey
|
||||
{
|
||||
get
|
||||
{
|
||||
if (FileID == null)
|
||||
return new object[] {Downloader.SiteURL, FileName};
|
||||
return new object[] {Downloader.SiteURL, FileName, FileID};
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsWhitelisted(ServerWhitelist whitelist)
|
||||
{
|
||||
@ -143,6 +151,25 @@ namespace Wabbajack.Lib.Downloaders
|
||||
var downloader = (INeedsLogin)GetDownloader();
|
||||
return $"* {((INeedsLogin)GetDownloader()).SiteName} - [{a.Name}](https://{downloader.SiteURL.Host}/files/file/{FileName}/?do=download&r={FileID})";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
var downloader = Downloader;
|
||||
|
||||
if (FileID != null)
|
||||
return new[]
|
||||
{
|
||||
"[General]",
|
||||
$"directURL=https://{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}"
|
||||
};
|
||||
}
|
||||
|
||||
private static AbstractNeedsLoginDownloader Downloader => (AbstractNeedsLoginDownloader)(object)DownloadDispatcher.GetInstance<TDownloader>();
|
||||
}
|
||||
|
||||
protected AbstractIPS4Downloader(Uri loginUri, string encryptedKeyName, string cookieDomain) :
|
||||
|
@ -86,6 +86,11 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
return $"* Game File {Game} - {GameFile}";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new[] {"[General]", $"gameName={Game.MetaData().MO2ArchiveName}", $"gameFile={GameFile}"};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -79,6 +79,11 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
return $"* GoogleDrive - [{a.Name}](https://drive.google.com/uc?id={Id}&export=download)";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new [] {"[General]",$"directURL=https://drive.google.com/uc?id={Id}&export=download"};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -193,6 +193,17 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
return $"* [{a.Name} - {Url}]({Url})";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
if (Headers != null)
|
||||
return new [] {"[General]",
|
||||
$"directURL={Url}",
|
||||
$"directURLHeaders={string.Join("|", Headers)}"};
|
||||
else
|
||||
return new [] {"[General]", $"directURL={Url}"};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -125,6 +125,15 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
return $"* Manual Download - [{a.Name} - {Url}]({Url})";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new [] {
|
||||
"[General]",
|
||||
$"manualURL={Url}"
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,14 @@ namespace Wabbajack.Lib.Downloaders
|
||||
return $"* [{a.Name} - {Url}]({Url})";
|
||||
}
|
||||
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new []
|
||||
{
|
||||
"[General]",
|
||||
$"directURL={Url}"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Prepare()
|
||||
|
@ -107,6 +107,11 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
return $"* ModDB - [{a.Name}]({Url})";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new[] {"[General]", $"directURL={Url}"};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -203,6 +203,11 @@ namespace Wabbajack.Lib.Downloaders
|
||||
$" * Author : [{UploadedBy}]({profile})",
|
||||
$" * Version : {Version}");
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new[] {"[General]", $"gameName={GameName}", $"modID={ModID}", $"fileID={FileID}"};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -94,6 +94,17 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
return $"* Steam - [{Item.ItemID}]";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
"[General]",
|
||||
$"itemID={Item.ItemID}",
|
||||
$"steamID={Item.Game.Game.MetaData().SteamIDs.First()}",
|
||||
$"itemSize={Item.Size}"
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ namespace Wabbajack.Test
|
||||
((MegaDownloader.State)url_state).Url);
|
||||
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -93,7 +93,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("https://www.dropbox.com/s/5hov3m2pboppoc2/WABBAJACK_TEST_FILE.txt?dl=1",
|
||||
((HTTPDownloader.State)url_state).Url);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -123,7 +123,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("1grLRTrpHxlg7VPxATTFNfq2OkU_Plvh_",
|
||||
((GoogleDriveDownloader.State)url_state).Id);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -152,7 +152,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("http://build.wabbajack.org/WABBAJACK_TEST_FILE.txt",
|
||||
((HTTPDownloader.State)url_state).Url);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -176,7 +176,7 @@ namespace Wabbajack.Test
|
||||
|
||||
Assert.IsNotNull(state);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -206,7 +206,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("http://www.mediafire.com/file/agiqzm1xwebczpx/WABBAJACK_TEST_FILE.txt",
|
||||
((MediaFireDownloader.State) url_state).Url);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -237,7 +237,7 @@ namespace Wabbajack.Test
|
||||
Assert.IsNotNull(state);
|
||||
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
// Exercise the cache code
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
@ -272,7 +272,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("https://www.moddb.com/downloads/start/124908?referer=https%3A%2F%2Fwww.moddb.com%2Fmods%2Fautopause",
|
||||
((ModDBDownloader.State)url_state).Url);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -298,7 +298,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("http://build.wabbajack.org/WABBAJACK_TEST_FILE.txt",
|
||||
((HTTPDownloader.State)url_state).Url);
|
||||
*/
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -326,7 +326,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual("http://build.wabbajack.org/WABBAJACK_TEST_FILE.txt",
|
||||
((HTTPDownloader.State)url_state).Url);
|
||||
*/
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
@ -353,7 +353,7 @@ namespace Wabbajack.Test
|
||||
|
||||
Assert.IsNotNull(state);
|
||||
|
||||
var converted = state.ViaJSON();
|
||||
var converted = await state.RoundTripState();
|
||||
Assert.IsTrue(await converted.Verify());
|
||||
var filename = Guid.NewGuid().ToString();
|
||||
|
||||
|
@ -1,4 +1,7 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Lib.Downloaders;
|
||||
|
||||
namespace Wabbajack.Test
|
||||
{
|
||||
@ -12,6 +15,16 @@ namespace Wabbajack.Test
|
||||
{
|
||||
Assert.IsTrue(condition ?? false, string.Empty, (object[])null);
|
||||
}
|
||||
|
||||
public static async Task<T> RoundTripState<T>(this T state) where T : AbstractDownloadState
|
||||
{
|
||||
var ini = string.Join("\r\n", state.GetMetaIni()).LoadIniString();
|
||||
var round = (AbstractDownloadState) await DownloadDispatcher.ResolveArchive(ini);
|
||||
Assert.IsInstanceOfType(round, state.GetType());
|
||||
Assert.AreEqual(state.PrimaryKeyString, round.PrimaryKeyString);
|
||||
CollectionAssert.AreEqual(state.GetMetaIni(), round.GetMetaIni());
|
||||
return (T)round;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -145,6 +145,7 @@ namespace Wabbajack.VirtualFileSystem
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
Utils.Log($"Downloaded VFS data for {Path.GetFileName(abs_path)}");
|
||||
VirtualFile Convert(IndexedVirtualFile file, string path, VirtualFile vparent)
|
||||
{
|
||||
var vself = new VirtualFile
|
||||
|
Loading…
Reference in New Issue
Block a user