From eddbd2b14fcad640d34ecb209dea1816525e6ba0 Mon Sep 17 00:00:00 2001 From: Sebastina Date: Fri, 7 Apr 2023 09:40:14 -0500 Subject: [PATCH] Update HttpApi.cs allows external applications to tell penumbra about a mod package to unpack --- Penumbra/Api/HttpApi.cs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Penumbra/Api/HttpApi.cs b/Penumbra/Api/HttpApi.cs index ee87d026..ef56915c 100644 --- a/Penumbra/Api/HttpApi.cs +++ b/Penumbra/Api/HttpApi.cs @@ -16,6 +16,8 @@ public class HttpApi : IDisposable [Route( HttpVerbs.Post, "/redraw" )] public partial Task Redraw(); [Route( HttpVerbs.Post, "/redrawAll" )] public partial void RedrawAll(); [Route( HttpVerbs.Post, "/reloadmod" )] public partial Task ReloadMod(); + [Route( HttpVerbs.Post, "/unpackmod" )] public partial Task UnpackMod(); + [Route( HttpVerbs.Post, "/openwindow")] public partial Task OpenWindow(); // @formatter:on } @@ -110,6 +112,23 @@ public class HttpApi : IDisposable // Reload the mod by path or name, which will also remove no-longer existing mods. _api.ReloadMod( data.Path, data.Name ); } + public async partial Task UnpackMod() + { + var data = await HttpContext.GetRequestDataAsync< ModUnpackData >(); + Penumbra.Log.Debug( $"[HTTP] {nameof( UnpackMod )} triggered with {data}." ); + // Unpack the mod package if its valid. + if( data.Path.Length != 0 ) + { + _api.UnpackMod( data.Path ); + } + } + + public async partial Task OpenWindow() + { + Penumbra.Log.Debug($"[HTTP] {nameof(OpenWindow)} triggered."); + // Open the penumbra window + _api.OpenMainWindow(TabType.Mods, "", ""); + } private record ModReloadData( string Path, string Name ) { @@ -117,6 +136,11 @@ public class HttpApi : IDisposable : this( string.Empty, string.Empty ) { } } + private record ModUnpackData( string Path) + { + public ModUnpackData() + : this( string.Empty) { } + } private record RedrawData( string Name, RedrawType Type, int ObjectTableIndex ) {