From 6ee5f3ef2469650c7841817bd7dffcab108db238 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Mon, 4 Oct 2021 22:07:20 +0200 Subject: [PATCH] Swagger: Updating icons, cleaning up the openAPI spec and documenting the account endpoint --- deployment/kyoo-windows.iss | 6 +-- icons/banner.png | Bin 0 -> 13642 bytes icons/icon-128x128.png | Bin 0 -> 4041 bytes icons/icon-16x16.png | Bin 0 -> 597 bytes icons/icon-256x256.ico | Bin 0 -> 107761 bytes icons/icon-256x256.png | Bin 0 -> 7692 bytes icons/icon-32x32.png | Bin 0 -> 1144 bytes icons/icon-64x64.png | Bin 0 -> 2194 bytes src/Directory.Build.props | 2 + .../Models/DTO/OtacResponse.cs | 41 ++++++++++++++++++ src/Kyoo.Authentication/Views/AccountApi.cs | 13 ++++-- src/Kyoo.Swagger/ApiTagsFilter.cs | 2 +- src/Kyoo.Swagger/SwaggerModule.cs | 15 ++++++- src/Kyoo.WebApp/Front | 2 +- src/Kyoo.WebApp/Kyoo.WebApp.csproj | 6 +++ 15 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 icons/banner.png create mode 100644 icons/icon-128x128.png create mode 100644 icons/icon-16x16.png create mode 100644 icons/icon-256x256.ico create mode 100644 icons/icon-256x256.png create mode 100644 icons/icon-32x32.png create mode 100644 icons/icon-64x64.png create mode 100644 src/Kyoo.Authentication/Models/DTO/OtacResponse.cs diff --git a/deployment/kyoo-windows.iss b/deployment/kyoo-windows.iss index 276fe810..f6bb8aa2 100644 --- a/deployment/kyoo-windows.iss +++ b/deployment/kyoo-windows.iss @@ -9,7 +9,7 @@ AppUpdatesURL=https://github.com/AnonymusRaccoon/Kyoo DefaultDirName={commonpf}\Kyoo DisableProgramGroupPage=yes LicenseFile={#kyoo}\LICENSE -SetupIconFile={#kyoo}\wwwroot\favicon.ico +SetupIconFile={#kyoo}\wwwroot\icon-256x256.png Compression=lzma SolidCompression=yes WizardStyle=modern @@ -54,7 +54,7 @@ procedure InitializeWizard; begin DataDirPage := CreateInputDirPage(wpSelectDir, 'Choose Data Location', 'Choose the folder in which to install the Kyoo data', - 'The installer will set the following folder for Kyoo. To install in a different folder, click Browse and select another folder.' + + 'The installer will set the following folder for Kyoo. To install in a different folder, click Browse and select another folder.' + 'Please make sure the folder exists and is accessible. Do not choose the server install folder. Click Next to continue.', False, ''); DataDirPage.Add(''); @@ -64,4 +64,4 @@ end; function GetDataDir(Param: String): String; begin Result := DataDirPage.Values[0]; -end; \ No newline at end of file +end; diff --git a/icons/banner.png b/icons/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..db5e97cd4f664b329d03d720591a241ec62a5bb1 GIT binary patch literal 13642 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ΞPz%@W>rxL1l{Q(h)ZNQqvaoBbh@vr_H?LM=-Ws%nQ3TE;V8jBn zf}n2zR3`9mgcu4$eEZrwHN`QY^ooY9OdoVRkuGP^kOmS=#wG{gGfBv;`)r})iNci5 zB2!tqyGIB4YQZkcU?EBLAr6y2FKqOek}@UN9Yz99TZydB-S!$J^kTOSc`SS7%bERW zCc3|5vKN7_)S2j~-x<08+06dUM<-^I&AhmC{x4J|*%Qe9&7S$JP+!5JnY$ECuoi;9~-ynEmbtYfzdMpU&Zo}zpLZ9${n}j*Nm#Eq6TE3=f`k$w$jR&^^vM{ z5uB|55)Qvk&0SOTGQ9_HQ+(;zmAh5$RL4Y#aVM$HuP9te$dkANJSdteD()I~HvVB) zQJ~r@y+*0POyQEB9>_nc;6O=bmIjwF;i(}2wF3fH-?V3$Oi)?E96F>1?g5$TKSc@H zx^cQocDJeTB(3;GbY`VZGriZ`Be1-;JH1M>m~hCal@;u2K?(Z5@JU2pFk6EvwzC4t TSK01fE~u%d^QctS`o;eO?;l}T literal 0 HcmV?d00001 diff --git a/icons/icon-128x128.png b/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..f602aaaa40bb037117dd189e0c33cec32f068545 GIT binary patch literal 4041 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 literal 0 HcmV?d00001 diff --git a/icons/icon-16x16.png b/icons/icon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ecbd819daa84075fa1a47fa177b21b5f134036 GIT binary patch literal 597 zcmV-b0;>IqP)DlS^n5Q51&%`^-!-c}J_YYBfbrL0tG)W)mM^E7Glk zxaiWI;37LwQE;c5uFT3^iwlbdgNRVDAY$Bfp~l3bAYp1UO)|-3;*}Xmq0vIk2S1#1 z;r!NDHS! zT`V^ZaX#M0*$+52$)ve-(&$v3U(-|XYNahFxVLv5dt?t6KgO_PGtB?gV6r409NCe` zmFezF#m0gVdY%vx`=>#nE-}BR`EfSt_<3%$iGmeC(M=*APX{$Ec9k)?%9vavgp6-m z!RzR8Sa2_PF z*H>M~u_}zoDWz2YFN5iL8!s%06`SMEcLTZ626mEl)azf{tyXo(b?q~*>x{c@=h>ze zJiM{LIn0;GLbZ)FY4;u-=-Dq#dg1ox=IbqQ!6VERtR6w9W1&_nH*9-t?ry0uk=E&x znKAuoC6mey8bHeMt7P(!N+c$ft|t{CY@Ks0417Sfg9T`+%TY2 jEP92*{zl@v3=4qY26X(q5>8yD2N`Y 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 literal 0 HcmV?d00001 diff --git a/icons/icon-256x256.png b/icons/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..a395f0fe942ef7826d580fac8ded0386598a41c4 GIT binary patch literal 7692 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
G*eaI>pNT;POF@@ z5{?FRV%Ze1zZ;9ccQoQ&ofHz z^cgbVz@waM$n|xK-^At$Fd)^fF7wsgB(UC|ttJ&^+!uKTyE{d>D(^kpO7(4Dk%nm7 z5ROlPMmHs#F1yCcgE7PYcSE+zep9j+bqkXeXi-0V?x-nDOQyDBv8dG|`BsZ~8|uin zhDF5|r3WxgDWJZK6NCk@vANbp5vOMc#8NSWS=1ahug8Jmblc>z03Aq}LiBr?4`wa& z%mF#M$Y+Q85SI~vvsPJUiZnB0CivJ;e;X~QV-9H-17RB@`kziEJlNaWu>M|8T))Ca z$o`_FlJX8-G<#pQrc+YqQnafdBjL`>qrn}CqtMeZHRbMWWOs-Mas4tJ`YVD@{^=GQ z(PW0a=>-#W(<#3c^JJA`1A@(%ZY*y70{5Q%BAi8#YdfX8M6i1(PPP^hmbRY!XQxaE z{bZGS1A^XZ50~=k^bI<#=#j$V4R*r-j%4ltoFFy0Zr2kF4T;vJD?Ebbup80H8BXZy1ho>IzkO~=d zsep{ZxlP|FMvn*UI%$by5$Kw>=V&4`X^N>nj0vah$OjZo2rsNnCOX`;zp< zZ~S7%m~xdPklxx@cRuQkD&AWt@GvqaD%0KaW{6be(yp>AeiEY8f5}B0g5ChvXR))o z()ty0ZAB8y=X!Fw@c(x99T49&{ zj=$B}ot)1lcbN*{jsN77uozFhn#qP*Q@ASf%|r6j&z>#5Hc|N#sXR>Dn#)X~jSPY* zF}-?&6|t6xa;F1aQ)!=cNZ}ArQfcJ7X+M4B))vI$r0PbM-_gFnl>Eq3 z=Iv()6wvLy^atl`;b`Ybr@6-0U-z5usBdQBuJce_;jhb-;*fBG!A0&Ws1fr}$X9z6 zuFm5aI9i~SauIyrb)0nQB%qL&q01qR%!hUPr) zd`8~8o=e99BESX6A@Th2k*weM-HERnf@iF?-yHuyqoeCN-rR;khE*K7CDGvM$E0k` zFb82;v=kL?E$iuRypemaJWx~&f&h`p>KW(it`u+8?naPOJo?~(^Q-#TN_CUj;e z=9bh5M8mp?FvY;J-iLcxGg+XZ8I88FFf!ym?Unad4h*-)=m!`bTkmviq_C z&-1qrHq-CXgQ&YzA1?;Yp}ur3jef<%I-Ok!!(B&wDDk7#hd#&tjoWU+}r{zb2!*gf&(wSGV_?DozmeQKUm&xDF7 zwFp4tR!lTcS!fjxceojG5g)Sr=+Kse&=%ENhkqnrSP8=`yFTH0* z%?O3I5WE;>jQ{1G_FnQxQ&Nvhtl?7BP_i*qlB3O7il+xNwy;TTf^#tkoX?ReaVuAn z$;s{DdIpr9d;xo~!Z+%9ZbdUUrEE|_TTglNf?^$O6YB2~U>mw~s{a%eE+}E&+>ly`FYjOc)^QkpYy|^Mf-Bc-g$7;{~ zR;}mKuh#P6-X_(OXO&=TG!=oHgp!`S*z2)yCoeC3#wEr2- zKoIC2I`1oLdW2=^67Q%%TkCYnmnqJG&kK)kIJv5B!?M70WIkZ>E9xgoT!++QnZa5Y z_yzMcHQ1o|8A@AM)n^0&aAH^Rr2V3M!lbe923oUpCE%&b`m;YJ!R6Ek)YUt@IIntZ7R2(YnV+mO-_LvEbj0`Rf#xY(j5p8I zLe{MN=L|SiVyl5u_Vk1kE~OB)1ArzdC;#%5-9GcC&1O{#GBLhgqug|%!Y))rWaDjL z5s0h&KVw?;_-COHWmL{8nZqT_Mm4xgkeqT==6y7L{e8>_7jI>#Ap*oJ7;}GP_znOnMewmBt&seE0+lHVaA-<9b)Q@#y)dUBY6HTzS53o z(*5^1nk6a81NaH`=F8PystJYL-`JQ?dhnj>*`WI0Av(of}g19f+;*#y2*s$?6g zg$73cdCaNrbst#Z#@z_?3sG%5;f=S89pe-}@EvwA3Jyhc&Q6GaIZQk0sflRWx97_* za6+3Roiwmr=h9vV?&eWI1FrTco?eWU8nq89JH5~lh_Aj=DPSY>=zpaz9nN&$&XBz3 z!^xTM7qL)@?aTL+48=QB0=+50*uUQD`@cz@^=BvvC*{_%2a!Of#7ARV;X5@IzYqW< zGMS_>OY%~Ve21JQ04B71sJ@rN8@&28|AjtwbcRT@mlm`m5wV&@zqOx{KpK)qhRz=?{J?-)<=RS41v)*%hongrj=!|Lv_q+AE zoSnB`BFlezOp`I zz33qWQ$Mu}>R{igK5Zce!bSeU5ZCJQFv(+*tz|u6Cc#R3Fo^863&}8ZER|Nx{EF;~kLeV=1rWrE0ZJ_{MBpY>DpFQi6yFwq z-|&f-(p4R7T+(H#Dc9ZE73b!PDH2aEm1jC5RpdMA;^r&KDbY@=yzlhFQmt2x;uo>( z%sd?Z%i*n24d&bn^n&z6RQ8_AT4onbJc+R(+?}Mc~gfjZw92n~?%I5U3*_3K@Ad))q zjIh(uO2w&EA+DHT^ zky#Gc!O~b&7Ncbz>Vl?T>VrZ~Yc%1e$Mk3kr0gN&+fh#=*=Peay+m28LO35p=1Yaw z#MBO@77w+rBoGVln2hoCFDL1UgY|xRLaxE8l>x_B=f9rV2@oK5X>RL(lHjtZEO$)D z5^qAFgo}bIH2B2_X6u53<7N4j{8~uaD^L)*eE2*Vgcro^#-FKebv70Eky_MBk+RoW z$s#85_aQju!jsW+&HG?iPLuz=P{s|@F*X5QN#_>??hFFv$8wO!_oCSVr^v0-jV)|X zBj+cz8t;Tu&KBBT7c%^%9%~1q8$NVCj=% z(Id~>)>!`=C|R1Yy^ec+mEPZqJ5u=CDygZ_^a42fyZZ(ZV#x2K#plhKSg%-X^_qfu zzC?A}C?Ley72}?3sEZ1NsQGED?XuW4Nmf8yU4rt?Y%!+iG=gUb0Qumo=xLNRi4)N{ zT8z@y-?YKqh;>^s7Qktdk3@xep$sGrr&WLkFufEs!e7A{q%57krMM(n?qZPp@2zu6 z2Q@;z(8+#~13&QMOdZT;bA9syaEq7RfUpBO!z(R+T9huLs1Ou;70cWZjjFd3G{B#S zAe@O2guhWJ1DHry0s~BZX#NRNVBRK_MVMh6f}pxZ1DK9|azB`#r^tuEA^+?>mbL}T zZaI$j4`0M*59MiNV+38_{~H27H~mF)VuFU|uFUPrXg_HL;JgHavJKGy!W&?y@;u!? zKIx}}5Pm_p@As$bp+I_c5C|)j@#C+WS~x(jll9LECY+V-AHbRA#eZ}P7ma`e(=m0S z+#~96;2QLveEN-lcEKMG!Ge(n!oVGu7yq$?3s?c8u?zez1yH~y6kyj*2cvr$0rng0 z|KHP)o4At1O@Xq`8QA(d|i)g4K&cD<+mAJw(MSrI2istb~>%`~T1U zdAlR;?M&QclijhTi60C*^WK~JzWM#W-|y|XOw+_p!p*n|5#J<44DE;x76CyZrXY}< zAdm?`AOmb{yN*TyjYnd;gt!}{A$olF=@@{!gosxN5l0_p2G$7h`W}T6=z%B&?4e@- zej-GibSh+Fr0e9uNSC=V()E#(^`uFWAj9jG;g!RvsA(8lfenvXLgoRCCl7X%0DKML zKx}Gxx{(~f=hkJX69K#o2@!cM21D`Y6=oH>o=0zh;7HVm-H%Ev#&Pv!4 zat*+=Q}Rs(D1_jXxEr7Kr0{YehfmYp*#B1q@65R2p)zKw3NFtqvZX-)?*W*9|Jhwv zRR~W4a7@n73Fu%g%1iwgEdcVjFfcg)l}sHTmUf2D#ek2mjWeB zYhm11>+WYBc=uj6KR+8@LR9u_NLb>etrTMSh<@;s) zSn1{h&kyLx=jI!o&s=}pB2F~j>{P(8U*-9}m9I3-)v7Aa{JDsmH3ct78GJR|i@tE^ z=G#y8pGzL>xI?LNrQP#4Y{iWjlnO{1YmHW=Wxhiidc8%T{;h^@o(`=Hxr>pX_hJah zGJ_mw_iTo?5nvrLTNC&>>;0u-3Z>$`RdN8AR8@Wa==D^WwHqechGcKk?ckshnK1MM zbUkOg8CEG>1khxv|B4nVV5O9Wrse@9^mn$aBq0000< KMNUMnLSTYhxE}-n literal 0 HcmV?d00001 diff --git a/icons/icon-64x64.png b/icons/icon-64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7d28e990527a6623ee685e3f2289f216412048 GIT binary patch literal 2194 zcmV;D2yOR?P)6)eR7;kX9zKhj6Q@ zJjNfL&<03sG$6ESAVCoodkCrPga(yBD*FdE@kk^Dte~oukT$WR%^ff{vGJ%V3|N*p zk0p&;CypK4_g>rR+*dx^_i5j>Nwc36>E=G{@BHrh&hMP_eeS5$YS_&1ZEEY^C4eD- z66;~(cZzUTT5>Doe%0UXC`!C(o%Spbhqk~py$31BgHqZ45l1C9WAo8$PGIF3JX zjmC6MVdnvjNC7w{N#fbfN`Qt*b!v>R<>0ObS|vb(Oaui@NfH+~p#9babol(JRVz+D zhm_-#Iz2WN5tanRdUit;mLUjBs7Rud&m$s6RU$Toa@Y{CM?aRtJj&&)QzBp{q3LAe zFY4jQU@G&vlMhNK6Z-+220#OPWH6OE>2wfwa7=)PinIbj$UziVoPNhS@`&*}y3?u= z`_=Qm9!zCEZTE0GnV>RJ!p$dwns}Re}`n9`n8o&p-e0Zpf;$g1o z*|%z;O9wAZowxe@bTV-tfTsbM)>dJ34~!@WW54VQ7OJ7atAJrg1PV`k1Y zmr#vAZSZIoz=sA?nQ_;anxHKL_QgWDH3ED!K5cmYhlL)bOUm(g`V@71UX0<(uT8PH z8A@n6nRrn302YS^QyELoaf_Cwz(*5dJi288ao?4uYoodCcs1|GE7<}BiVJ6Yb{^NHl$V$%{j>7|L zP#l+{cr7c*$`Offmx(aK$i5+bHmDf?=#?HE`SbLHYgvxFB4AoreVgR+uVk&?0BWPMap7k=OwEKvX~fnfDFh;g}K!$@pjgJ*izv0(em+V%W`??cj=lKP?K# zR)g~Kn??KL@nbQ?czTB7LnC}X9-+_{#JY!Y|NHmqO3`3E3nJoY9LG<1MT9E?$kor~ zd*$QzhB_?o-4^WBgC#vlsCV# z)4ELlWUpU8{{52q*HB>nRzeA^G_B6fRS=C0A{dIx<+u%oR0(aF2-gJ6mjpbO-H8F- zx+>Iy-|OXGT+9^>?`bstH}hId=|E>7j%aKM;jXRlbG+TKv|J*~ar`L9@w=Sb(^4Yz z(^+GKG~5;s>q*jc%UuAPgXPhI0ES~m#y1R*kH~*ij*G$)M6ql)JZj_~;W&Ow%`X3D zb@Q663>}KCdPigMBWa{$YB)A4|NqT-bK_YM38AhXmJ-?kBI2)h654V#Xa+LyQ;|9O z>Y02$@{%aK`fXh$?B+=o1nl9I%JG4zow%5D+*gpHNvKkeFF_Ovc8_QhYS_{CoPdw_ zb?V12j)8kvbUytz@2YyYx01`Qkr7H=idrjW{HNVIiB|#OuJ8>c>wGFO7w3w>Ui2$ z=Lw_+UwV&iwx^?7DWSMBkKEFvQ{yS}ACx3m*hMl zfOY@hE_XY6hUy769#HmpxZf{FbQgx7P$Rl)!!>w90HwJa{#CT@6R@CoaJ3rH&z$JH zjN1qM?H;3u{&iN$+8KM>1W@kJO540(KL6`bt6(BKgRi|)A23ht5U_hopV1SthN}_X zvt{_U3D_514PF%8?dHE6(TfYZl>KpH1}Af?eT+T`IDNB^B_YKa?)i?Cwh3TMUrK+? zP$y*#8vgXfN&Kp`8as%DGdFig-}vCrF*TyE*;bsk2{;&D^+Y56r-)uG%-BlV6aT!7 zSE~{I|89ufS0anwOD7ZG)y~m!Svr}xs_qx?1Z@+bwY>>BCKYF;%t03irBZ3^PClkYq$nW0=(KAxSrAOUSTkMd`36o?+V&k7uc}-gITmfz=q!;&cY1=H_UGY zSU4eI-Ah?Jup;1`I=^p7!!;NYaKrynj0H=;4>r;d9lXN3Kb~F(W4Nx^+ynslKXvXt U5Gfy@#{d8T07*qoM6N<$g5NhZ7ytkO literal 0 HcmV?d00001 diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 5efb3ebc..8983bf4e 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -15,6 +15,8 @@ 1.0.0 true snupkg + + $(MSBuildThisFileDirectory)../icons/icon-256x256.ico diff --git a/src/Kyoo.Authentication/Models/DTO/OtacResponse.cs b/src/Kyoo.Authentication/Models/DTO/OtacResponse.cs new file mode 100644 index 00000000..13ff8aac --- /dev/null +++ b/src/Kyoo.Authentication/Models/DTO/OtacResponse.cs @@ -0,0 +1,41 @@ +// Kyoo - A portable and vast media library solution. +// Copyright (c) Kyoo. +// +// See AUTHORS.md and LICENSE file in the project root for full license information. +// +// Kyoo is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// Kyoo is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Kyoo. If not, see . + +namespace Kyoo.Authentication.Models.DTO +{ + /// + /// A one time access token + /// + public class OtacResponse + { + /// + /// The One Time Access Token that allow one to connect to an account without typing a password or without + /// any kind of verification. This is valid only one time and only for a short period of time. + /// + public string OTAC { get; set; } + + /// + /// Create a new . + /// + /// The one time access token. + public OtacResponse(string otac) + { + OTAC = otac; + } + } +} diff --git a/src/Kyoo.Authentication/Views/AccountApi.cs b/src/Kyoo.Authentication/Views/AccountApi.cs index 3c424efd..a2cbf2f2 100644 --- a/src/Kyoo.Authentication/Views/AccountApi.cs +++ b/src/Kyoo.Authentication/Views/AccountApi.cs @@ -28,6 +28,7 @@ using IdentityServer4.Models; using IdentityServer4.Services; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models; +using Kyoo.Abstractions.Models.Attributes; using Kyoo.Abstractions.Models.Exceptions; using Kyoo.Abstractions.Models.Utils; using Kyoo.Authentication.Models; @@ -43,10 +44,13 @@ namespace Kyoo.Authentication.Views { /// /// The endpoint responsible for login, logout, permissions and claims of a user. + /// Documentation of this endpoint is a work in progress. /// + /// TODO document this well. [Route("api/accounts")] [Route("api/account", Order = AlternativeRoute)] [ApiController] + [ApiDefinition("Account")] public class AccountApi : Controller, IProfileService { /// @@ -90,7 +94,7 @@ namespace Kyoo.Authentication.Views [HttpPost("register")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status409Conflict, Type = typeof(RequestError))] - public async Task Register([FromBody] RegisterRequest request) + public async Task> Register([FromBody] RegisterRequest request) { User user = request.ToUser(); user.Permissions = _options.Value.Permissions.NewUser; @@ -106,7 +110,7 @@ namespace Kyoo.Authentication.Views return Conflict(new RequestError("A user with this name already exists")); } - return Ok(new { Otac = user.ExtraData["otac"] }); + return Ok(new OtacResponse(user.ExtraData["otac"])); } /// @@ -126,8 +130,11 @@ namespace Kyoo.Authentication.Views } /// - /// Login the user. + /// Login /// + /// + /// Login the current session. + /// /// The DTO login request /// TODO [HttpPost("login")] diff --git a/src/Kyoo.Swagger/ApiTagsFilter.cs b/src/Kyoo.Swagger/ApiTagsFilter.cs index 10177e71..f3537541 100644 --- a/src/Kyoo.Swagger/ApiTagsFilter.cs +++ b/src/Kyoo.Swagger/ApiTagsFilter.cs @@ -59,7 +59,7 @@ namespace Kyoo.Swagger }); } - if (def == null) + if (def?.Group == null) return true; context.Document.ExtensionData ??= new Dictionary(); diff --git a/src/Kyoo.Swagger/SwaggerModule.cs b/src/Kyoo.Swagger/SwaggerModule.cs index b2da0668..b929ed62 100644 --- a/src/Kyoo.Swagger/SwaggerModule.cs +++ b/src/Kyoo.Swagger/SwaggerModule.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using System.Reflection; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models.Permissions; using Kyoo.Abstractions.Models.Utils; @@ -58,7 +59,7 @@ namespace Kyoo.Swagger document.Title = "Kyoo API"; // TODO use a real multi-line description in markdown. document.Description = "The Kyoo's public API"; - document.Version = "1.0.0"; + document.Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString(3); document.DocumentName = "v1"; document.UseControllerSummaryAsTagDescription = true; document.GenerateExamples = true; @@ -74,6 +75,14 @@ namespace Kyoo.Swagger Name = "GPL-3.0-or-later", Url = "https://github.com/AnonymusRaccoon/Kyoo/blob/master/LICENSE" }; + + options.Info.ExtensionData ??= new Dictionary(); + options.Info.ExtensionData["x-logo"] = new + { + url = "/banner.png", + backgroundColor = "#FFFFFF", + altText = "Kyoo's logo" + }; }; document.UseApiTags(); document.SortApis(); @@ -129,6 +138,10 @@ namespace Kyoo.Swagger SA.New(app => app.UseReDoc(x => { x.Path = "/redoc"; + x.AdditionalSettings["theme"] = new + { + colors = new { primary = new { main = "#e13e13" } } + }; }), SA.Before) }; } diff --git a/src/Kyoo.WebApp/Front b/src/Kyoo.WebApp/Front index a3da5f1e..7bf53b40 160000 --- a/src/Kyoo.WebApp/Front +++ b/src/Kyoo.WebApp/Front @@ -1 +1 @@ -Subproject commit a3da5f1e6edb982e3b71792a7ea6fcd45661c337 +Subproject commit 7bf53b40080d1d43228f1cdcad510b302ead99ff diff --git a/src/Kyoo.WebApp/Kyoo.WebApp.csproj b/src/Kyoo.WebApp/Kyoo.WebApp.csproj index eeb49df7..4d637707 100644 --- a/src/Kyoo.WebApp/Kyoo.WebApp.csproj +++ b/src/Kyoo.WebApp/Kyoo.WebApp.csproj @@ -12,6 +12,7 @@ false $(DefaultItemExcludes);$(SpaRoot)node_modules/** Front/ + ../../icons/ $(SpaRoot)node_modules/.install-stamp @@ -29,6 +30,11 @@ + + wwwroot/%(RecursiveDir)%(Filename)%(Extension) + Always + + wwwroot/%(RecursiveDir)%(Filename)%(Extension) Always