From dddcfa6dbbca04ed69597ec335007612e2e2b8e8 Mon Sep 17 00:00:00 2001 From: Greenback Date: Tue, 15 Dec 2020 09:29:51 +0000 Subject: [PATCH] Suggested changes. --- .../ApplicationHost.cs | 3 +- .../Emby.Server.Implementations.csproj | 7 -- .../Plugins/Active.png | Bin 1422 -> 0 bytes .../Plugins/Disabled.png | Bin 1790 -> 0 bytes .../Plugins/Malfunction.png | Bin 2091 -> 0 bytes .../Plugins/NotSupported.png | Bin 2046 -> 0 bytes .../Plugins/PluginManager.cs | 3 - .../Plugins/RestartRequired.png | Bin 1996 -> 0 bytes .../Plugins/Superceded.png | Bin 2136 -> 0 bytes Emby.Server.Implementations/Plugins/blank.png | Bin 120 -> 0 bytes Jellyfin.Api/Controllers/PluginsController.cs | 60 +++++++++--------- 11 files changed, 32 insertions(+), 41 deletions(-) delete mode 100644 Emby.Server.Implementations/Plugins/Active.png delete mode 100644 Emby.Server.Implementations/Plugins/Disabled.png delete mode 100644 Emby.Server.Implementations/Plugins/Malfunction.png delete mode 100644 Emby.Server.Implementations/Plugins/NotSupported.png delete mode 100644 Emby.Server.Implementations/Plugins/RestartRequired.png delete mode 100644 Emby.Server.Implementations/Plugins/Superceded.png delete mode 100644 Emby.Server.Implementations/Plugins/blank.png diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs index 404e28bdcf..17cccdaf92 100644 --- a/Emby.Server.Implementations/ApplicationHost.cs +++ b/Emby.Server.Implementations/ApplicationHost.cs @@ -393,8 +393,7 @@ namespace Emby.Server.Implementations if (_creatingInstances.IndexOf(type) != -1) { - Logger.LogError("DI Loop detected."); - Logger.LogError("Attempted creation of {Type}", type.FullName); + Logger.LogError("DI Loop detected in the attempted creation of {Type}", type.FullName); foreach (var entry in _creatingInstances) { Logger.LogError("Called from: {stack}", entry.FullName); diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index 7e0be78993..0c94f937ce 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -73,12 +73,5 @@ - - - - - - - diff --git a/Emby.Server.Implementations/Plugins/Active.png b/Emby.Server.Implementations/Plugins/Active.png deleted file mode 100644 index 3722ee5200f60eb51419a182b8e094c42c6291ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1422 zcmV;91#$X`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1tUpBK~z{ry_bD# z6jczwXWrYr-Mzc^+Hy3sRX(I7El3YRB@F=!NDwJSK?5z3hyERUk$Awn+W1lWvaa3p$FjG^TLRcsR?^q0{Y0h8v#%l0YbuKMX0XS(^f?3h z`>dU7o81n&{NL+swibZtVsQySzLIfab@fx#wze~U%0PZ)J`7BDe(F)B<(F;*#jZ(2 z&?-6!e?Zw>cR%MAkqnGGISzDLhts~(5oLFnb?`;>Iuk!iQlzyP{Q(g57J-Rx)8w_1 zg5xWmFK>!!yM|0SHvvYskC;2UIjf}b&?}0qzb`qZIgsk~EcI%RHJ6)1(PvJh!Wa)} z8ePyG=N2UU#^CvBZe=GjzDkV9gA0$&d(6HTm-O}N@bnWS=cKwEo37jpVzl6*sW(gx zno3u>Cnp}a%^!%k4VGNJ8FCP-Y7r))2~~@Z&Yv>vz%<*WBh#l&dL}JV-Co}klEqlP zvvbZtlE{9dvrSuZt8M*Yh{5<9VxeoXT~Ne9gu{WM3EmHu94Vx>U4%D}6=tL-s1^RU zup9Bt&c!{V1hCPqNsD()FK4!Sw;-mo=Awvvu}smt-M=U@%V7hRv0~|oq5+oS(%*_y zuS+QlhK&qUR9ei|65Rxrph<84nfu?B$f`Xc(gpAQ@iM?I=jS4iDocqIW_cc8TYN6GrFKrxKT4}3#OovJ6 z@(nvLOQcv-HIG$ySHd{~#X)xY2l{*M+@jN2u=><%$SK{$8J}mXI>E)LZ8u1hsPV&Bnw;s#(nm_%>zdlAHrdv^~YwYxP|ye_BIj2ici_yGuty*q_N zTp>$X9~(HpB+wN2s`;vU#y0CST?Sy$Iz0Wl=!%t*^o!k7BGo%2zW$R*+iZ)z(_z-% zO>S;3xKFxK)1C@Cqy%*@PWm&-Mj zHM+*I7D-i7%q;(RDL<)-<`&4=+1cSyqeg|Rs=9pL>lSezK`oN*fFh7ibEKzqxj<1-5eykJ1WnUKkqI;m11O~s4u`oVb#-;TtgOto c?kxcS0~w3NKFYLwmjD0&07*qoM6N<$g7!P0tN;K2 diff --git a/Emby.Server.Implementations/Plugins/Disabled.png b/Emby.Server.Implementations/Plugins/Disabled.png deleted file mode 100644 index eeb8ffefc2d008695cb1f8fbcce47ee84ae5c277..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1790 zcmVwb+pB^%Z{LF1Y=(%4aNu&-2;%9(!-o&Y z;&&4Z1wdF>SfEZ!+6MpJxCIbfc~H}6S&ViMfAd5ao<+`S7b%I`pWdPXP?+fhdr3IH2b zl7IDTdvr`3^L|}D=yX~Npt8Ia(lauAalQxDXuIh0<;%j%%uJ1=065pKT~lFl2}pv? z612Hs`9(%;ggd2W)RdHz2rphdg8{V$7>wC>;Pd$~K0XdAVBO}lQ6_AmUK>+k$ zxpL(fHk+M-_$8RY_cR*K{*xz9wvr_T01wq|5)5H9Lipq)(VjhfcK@(*=cRz4AZUHx z=1>?&2-bzKg@(tEXdV%f`1rswzvbZU>wvvBqR*utbk$dAks160S^ca3<8a20JQi5ve_K^$nbbPde8(uHd>6W(P)_E zVjqbQDB4<~v$F#@xXw>11wX%Kbl<){CA@n160qElWBLC!jf%%6#(>M_(oL}QMKHtk zRdaE10Rb{3d5ngKhrpmWfKVg?i9`Y;NK%7CgVS8>yVRFb@xg-!w_zeO&YnGc3Oynt z^9F-KT~=0hx}>B;j>B#Xfc$)ATtYH*_jJv2Esx6s4wns28XBOdr@L06P&^{`6)RS3 z^!Ap-kPsn7(LTWnK;kWdYIz0e7Xr~ViYfw2sgsvZ2NrT7IywaaJ)lx4XT?<@5WTEqP2F3#X-hQLbw611UW_zeQ%M03A|m~wGf8T&l)D}* zd_(#KN<`v(1VCCY@(#=t5xTlsUP)MO4Gz0ts{JAxF1eJKS0js!@irM5m=F4yYaDwE z@~H=sU}$h~+9Z?7LYErh(Zh$@Lx&C#carwYWV6;ICnu+Ni!3^r>*Pe@OD7h)xk1g> z04SIQKp1PL@G$}J)!v1)ef#Fx%pJjh-Ykoz151+vG-(NdbVmW;&xbMre?CY_O(PJ@ z2Nsggo7bc)zWdHyG07*qoM6N<$f?{PtRsaA1 diff --git a/Emby.Server.Implementations/Plugins/Malfunction.png b/Emby.Server.Implementations/Plugins/Malfunction.png deleted file mode 100644 index d4726150eb52857ff3ad25462517be0de9187b47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2091 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 Vv#07tKs^8e002ovPDHLkV1ly-^R)l~ diff --git a/Emby.Server.Implementations/Plugins/NotSupported.png b/Emby.Server.Implementations/Plugins/NotSupported.png deleted file mode 100644 index a13c1f7c1c03605a5d7e0afdc6f4a81621330ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2046 zcmVqliy>cVqq8^Lf84jXzRbXHoxpjmsPn;0Hn?PQ*K6WF7k0Q)&K*4=l2RP#>Du~ z&{=*$nX*rrLCU%10^qLNpR9}9`2}z}miUm-{=~TJI_SOr4E1M4-KiywiL`EFxd8a6 z_NQp#w*M1QZ=!SFht=gCNieu?L-VPk8)+qtNu<;*7XYt{T?uDmpV^e<8$_q?KEMNr zF2i7BJ({X3KgoMv{TeC9mkWT4n@ke=U14fV%#M>lRXnfFXhF;2myuB197%8eBs0qe zKui+QRFu#k`}<=e@wGny`Vj)4BmlqW0B~t>o5XDUQSCmtyL?~my+;KgQ6E%{!EAK1 zSQe%fJ7NYV;?q21^vG zc>u4z2Q>VOG{hR?AWS(3VCb1)Yyfd5UBsppz$}n-3aWPt2tb3M0KgstDa61b3a5*J zYz?`Bf_k!>vRg@qG|r#g?jQgb0ucWZ0oX|Zl)j`KvkO37nyQK2@g_8lHJBLehe)~t zo@>^@EhGr&{SYu{ZCJ4fKo7*ePXKm5I)E#0DKrie2|D_;|2eN7tB43(`FK`@`|lo) zj`v-il?7ZsLWV6iv9SaIE(W6i3iXk{Ail8vkpOt?+ZdjAwsB;*V`$AMRAQ zK_qeD+^Go_(mHp0W8{So&Z{3v)xW^Pi9TG9*V144qpX zfRHSZGU)kOi`(Bbc;dOI;TatTu}o&QYMPmWuB{CN6%|;&{PA{o!izWVsC#)6VoAH z6N%PiM-lLB7{-}?#O$p0SPFpCsX%Oz zfT8>}Ov3}j3W5ExOmhKjHbETt1f)5eDL#(ES?-AVgLS@~3CF94G7M%jJ9dB8xHYS^ z{+pw}jgmeYDBJ7n@AXE+CaVA1N;05d=zcCMoJD9Y9e`(8E?h>tVC5FMaMf=aW74GT->AH~TlQTU?8_})m97r35K-<}eX{`<>{Ty5$^MhApFzLr| zG4V7Mn|}$tsur&2Tb4?D+~2UC;vo&nuP!39zSCDI#d1yjpYo_`*9x@R(C6rmIa2_B zI8%v!%~VzU@Khr=6BW2JIViwI5xp%Nmoh&=+SAFH8|;P4+1e!mOm39JF=!2xN)9RB}ysRiDIQm6WXL5xEja_}ntZlaiKv%Jj0*JLKw+z>SMo?Y9fc3?7(WDv1eEY>U z8-B`z>6aa@nfwE1W$^ZKgN6LhT7zyu2oMGaBFYZ!_(skkm2eEVgYHwmwrB6(G4T=3eS5;c;Os6`Zu=xgl#gn9)Ne$DcJ@IDV;_ zVqm^!hW`2t=5Fa9#54EruF2eX;kNF?r-Ng)LM(B=a?IAIlq85NNcicymckm;m0-{& z3#ed#Ys|0vjCj4!TpMw{*g&*HRnzP>t(v+FbEl76yCY-RtVW(Z*bId?fIPAuAOHXW diff --git a/Emby.Server.Implementations/Plugins/PluginManager.cs b/Emby.Server.Implementations/Plugins/PluginManager.cs index 07b7297482..cf25ccf485 100644 --- a/Emby.Server.Implementations/Plugins/PluginManager.cs +++ b/Emby.Server.Implementations/Plugins/PluginManager.cs @@ -1,7 +1,6 @@ #nullable enable using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Reflection; @@ -23,8 +22,6 @@ namespace Emby.Server.Implementations /// public class PluginManager : IPluginManager { - private const int OffsetFromTopRightCorner = 38; - private readonly string _pluginsPath; private readonly Version _appVersion; private readonly JsonSerializerOptions _jsonOptions; diff --git a/Emby.Server.Implementations/Plugins/RestartRequired.png b/Emby.Server.Implementations/Plugins/RestartRequired.png deleted file mode 100644 index 65fd102a2ca7ffb99c7843fa46b1c5274ec0e76b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1996 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 - /// Uninstalls a plugin. + /// Uninstalls a plugin by version. /// /// Plugin id. /// Plugin version. @@ -178,7 +178,7 @@ namespace Jellyfin.Api.Controllers [Authorize(Policy = Policies.RequiresElevation)] [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public ActionResult UninstallPlugin([FromRoute, Required] Guid pluginId, [FromRoute, Required] Version version) + public ActionResult UninstallPluginByVersion([FromRoute, Required] Guid pluginId, [FromRoute, Required] Version version) { if (!_pluginManager.TryGetPlugin(pluginId, version, out var plugin)) { @@ -189,6 +189,35 @@ namespace Jellyfin.Api.Controllers return NoContent(); } + /// + /// Uninstalls a plugin. + /// + /// Plugin id. + /// Plugin uninstalled. + /// Plugin not found. + /// An on success, or a if the file could not be found. + [HttpDelete("{pluginId}")] + [Authorize(Policy = Policies.RequiresElevation)] + [ProducesResponseType(StatusCodes.Status204NoContent)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + [Obsolete("Please use the UninstallByVersion API.")] + public ActionResult UninstallPlugin([FromRoute, Required] Guid pluginId) + { + // If no version is given, return the current instance. + var plugins = _pluginManager.Plugins.Where(p => p.Id.Equals(pluginId)); + + // Select the un-instanced one first. + var plugin = plugins.FirstOrDefault(p => p.Instance != null); + if (plugin == null) + { + // Then by the status. + plugin = plugins.OrderBy(p => p.Manifest.Status).FirstOrDefault(); + } + + _installationManager.UninstallPlugin(plugin!); + return NoContent(); + } + /// /// Gets plugin configuration. /// @@ -281,33 +310,6 @@ namespace Jellyfin.Api.Controllers return PhysicalFile(imgPath, MimeTypes.GetMimeType(imgPath)); } - /// - /// Gets a plugin's status image. - /// - /// Plugin id. - /// Plugin version. - /// Plugin image returned. - /// Plugin's image. - [HttpGet("{pluginId}/{version}/StatusImage")] - [ProducesResponseType(StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - [ProducesImageFile] - [AllowAnonymous] - public ActionResult GetPluginStatusImage([FromRoute, Required] Guid pluginId, [FromRoute, Required] Version version) - { - if (!_pluginManager.TryGetPlugin(pluginId, version, out var plugin)) - { - return NotFound(); - } - - // Icons from http://www.fatcow.com/free-icons - var status = plugin!.Manifest.Status; - - var type = _pluginManager.GetType(); - var stream = type.Assembly.GetManifestResourceStream($"{type.Namespace}.Plugins.{status}.png"); - return File(stream, "image/png"); - } - /// /// Gets a plugin's manifest. ///