From 939fe6be815f7005a2bf08481ae60eb5941d4f6f Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Fri, 21 Apr 2023 22:52:38 +0200 Subject: [PATCH] feat: add logo and minify CSS --- assets.zig | 5 ++- assets/index.css | 8 ++++ assets/vidzig.inkscape.svg | 80 +++++++++++++++++++++++++++++++++++++ assets/vidzig.png | Bin 0 -> 5679 bytes assets/vidzig.svg | 39 ++++++++++++++++++ src/main.zig | 13 +++++- src/minify.zig | 37 ++++++++++++++++- src/routes.zig | 4 ++ 8 files changed, 182 insertions(+), 4 deletions(-) create mode 100644 assets/vidzig.inkscape.svg create mode 100644 assets/vidzig.png create mode 100644 assets/vidzig.svg diff --git a/assets.zig b/assets.zig index 5a57d7c..28c4dde 100644 --- a/assets.zig +++ b/assets.zig @@ -1,3 +1,6 @@ -/// Generated by build script +/// JS Generated by build script pub const @"index.js" = @embedFile("zig-cache/index.js"); + pub const @"index.css" = @embedFile("assets/index.css"); +pub const @"vidzig.png" = @embedFile("assets/vidzig.png"); +pub const @"vidzig.svg" = @embedFile("assets/vidzig.svg"); diff --git a/assets/index.css b/assets/index.css index 29aa875..69ef119 100644 --- a/assets/index.css +++ b/assets/index.css @@ -72,3 +72,11 @@ ul { .description_txt { color: #8be9fd; } + +#head_div { + display: flex; +} + +#head_div * { + padding: 5px; +} diff --git a/assets/vidzig.inkscape.svg b/assets/vidzig.inkscape.svg new file mode 100644 index 0000000..44ca6f7 --- /dev/null +++ b/assets/vidzig.inkscape.svg @@ -0,0 +1,80 @@ + + + + diff --git a/assets/vidzig.png b/assets/vidzig.png new file mode 100644 index 0000000000000000000000000000000000000000..102b52ab379ba150a8d2bbbc58635218fa9d669b GIT binary patch literal 5679 zcmYLNdpy(s_n(U7F1N@cDm8Nnh0VyNBupZA63tw4pZn#bRPMKA8gngkS+2`nA=iv4 z3(ehfTd~|Ca{0Y||M~r~yzvol>pahSp4VC2U8FuYhZqM41mZTht#=OuVu1tm zPIflnd&c`kD=?h$xozza3`R#E7W2@;1z=GWbJGfA=Iw$BdgzA&1qB7kyLox|J3sV6 z$$R^uvzZ!VAdpatfu6Q`Fn(n+3~w8NV_RKB;BZD)%GuwEELG8kh2#`-`pvD@UM#y8 z)EcK7p>@bNx1%d`;8DF5RZoA(3v095TgG#Yj~OV98o4z#+~6-i=K1oyMk4PQ<-YD^!x#^8&eYa-PBbHzpN%!>2lPtVkva*9A1T$4^P&NR2r zy}A;@qV|<-n||kt%kT=wf6~(rhG=bt($ls=gW~cX4ff|_u>Y(q8hLMooz4hoCj~mV zz)q&QF&d8#w->a1$hZuPLI(<6Y}3^SyK~2gtPip5I7I$bRz0RxeXr*S&VF8lSSQ4@ zox5Jfkklg-719)r{WZFn^0|hX$ZsX)wvw}NOVy4wGQ3qIVKD>G(3GFGAmqP|SnO<_%CyKB#I-srFB7yKJ(Xwq?qst%|OPOEWaBVX{w8fTMHt^RW-1c=gQRQ=JtFh zN6exBKKsc?m%T5*^}OS24^J1h3M{JHPP$NOC9L^D#dkfgXXj22kxtQ5A$g6~a!ZXG zcKaC$g_bhJq0RSF5eEkM=Sd0hvl6*~$)7c>wzl+C{B=VQy4}(#`j2jhK}DXHNmp2t zmhTvEdaUKXpqy^GmvjR=A8l4ABi%@%GBnlyw(87@ucRFW*_3&(7+uX_b)*^hWlw*I z&#w&ZF?*n}_AvSBQdxM|WOUrZK=G@;wQ+q?;6bD6PUdl+_Y7#IGtKx@HnR5IDfdHJ6;kNHQ@P)lsaIn!$>lK9_p0{Jw24!#55&k7D!J*9aM%RmSCNv0 zKFC_EL|!8|ajxQy!uNZ&3qSaiY&A`T)T1n@>Qjj*)evbu_}EJhglW4o^7&H6&d*OH zdQcJKjBgxI3F4(ad)KJZ;&&13)wY)$~xb$_A~nP_4TYP(gghG!)`@W;^2)vMBeQ3U3&3JUKG3S`1df zw0Y96oZ~EI6?oDDwD}I3+udV)^2(dhVsxv)Er6GJbSW8$a}dlG?2a9PNr=w@Ufw+$k1d$E0a1T(zy zw`F+?#yUt``V`!>wtZIc%phu~O%Y6HLDpke$+7dme20 z;}Z2M{*L4ZMzD)vjmdV_>WjIgz(4S;VEsN-{Z1UJKHt9&%`;6hEajW*UQ>ny=fNw&1xZnK3l7__ctd%$` zW(_7>KZ$X}{8h47cE#x>p_wXrN&|Wk#(w~Tx92_n&iN^*KV$$S*lIdcUf3k1wYT0; zYPG;c4cU_i|K^+vP&+lVe@?4ld_W6Te7R(d^T(vI2`-uLz3XtlQBHJVYPh=OFqrDL z=k62SU4PzY&#-4)2GhJ#v~2!Fp{F_foFe#HAbhfJIYtdZYvuyr|fofkM+pa#}n) z&Elz~*`|&3fyTNK%8Mkz@etFV!h;{4UG|`31k&r7z8Y!ody*$?|I3YcX}(`3@3{hF z7*KI7dR+%+I(G>=4{-gzVt@Vv;cc_bGdgOdi?1LDF`NC5E(Ce5l+;SK)ML_G z#=0KlrEPBV_Kx4h8~=K0q$|~RZdOW&RgAw%e5Cal#-)CeoUCE+gpEBi7of$9&b<5O z42?(UfJI};jr=z$Z>4ZTjK2!J*K%U|AJWn!#0#Y|=VLr1<~RFW0rO>mG|y@Z8|}P4 z3b0H@SB>-`f4EA%#dXnvcMjCOFXP5N1$~aRvLA|07G0&ipT4={6iNIP_{*{z%QjIqO_b~i4uSSp@t6Glb;_C(86qROa{qdW7 zNmQf7wc}WDnmRyaJ{)elh`E< zj}NmV2k#`J^yiGsf{X|2d_yh709|ypH9i-`WLmw-LBSHU0W0jZH6Pk8ncPy6wN&+n z4PnGofx9;93+YiR>yD=Yp%V$HZL8betQ_PW^)&9P$x{J$%K;u@2DCt!bDNJJ19SO$ zkI*^<|G-2WgLVKM+EQ>!lDyu2W!$WKVh1Q-2ee3mgBN@uWYe-HB`p&3iQdM7nNf`I zX~0_5YjGcbm7?*vERHn(5Lzyk#A@qqd{QY6uss5}cR>573BsAipQd1rQ?HwH}P7?h~TbSSx{($<({* z#ar*5@YXDCbt=Q9yw6xHC7Hcgw|q95v#S&;X0+%l4wyr}g8A_M32JSM)_N_c>+{h? z|CF%HyRW$Kl`BO#FsO)aZP7 zG+-A;XbQ@3oIcg&ty+YeCdQUW#g)60@B#4zr!a z7C@D)MRUy^m^%S;p$ldE?gq9k#I;2N=`S~M|NGsf!XaTU&EaojfYG9D%J9NJ7eWwb3Hq{11e2!)Qx*W0v z55S`may@^AmAE@}F-K^g>QNFszGs`+6?Rra1^kRBu|Aj2xc{txf^d#3V76>9JPTOAd(h!a3wM zK-C)`9Kv_R0>B6)Gdt)+EB|;?!~e?Ro4X+ZBaR9Nvq;GjG;IA5G7eKf&b302Ez4;N zaw~{=QR>5zJ%FdQ;{S1AC+pr4-4Ym=&DC4}JlmVQQi3;Yel+s~3Ok&|fp^+H?l#t4 zcYPp$e8#4}wk`uOXqL`sg873lV-Z8?1X8Ls6uy3e#n1gS5MHit7|=Pc78iX7Gkowc zSHIiJW5=&wy);PDl{1|QJh3Q!2cLRY>yHia%~*!yoE;SIcQwSQ^J7C1aV?N)&Lff1<1*GFA&7?{g%o* z0Gx>=ls@u4J~+un_LIl24MIoizv|^)H}fd3j50&@wZeN&v@~b-)cb~GHVxtVNo9|!8#@`p{RlCv;B&94_gO>M9gULGMm@};g*B7y|^wjFe58Mdt z_xQNJjtrDcJg1<*ze(Y?7mjB+Y*M43^1do!dGt=s+CyPx)}PZd4jGxTkK}c=D=b9+ zAszZeOA_s@0|ivLmeM(JEL~xOPfR+SU4AQq`zi&SrpjK{jhO!s07COVBnwAOCC;Yv zo>+^dm9}s#5&2q~Cv{7GEDswgs#Fj6$sZo|DC?r&Iya+V^ z*3Dv;*IV6#y_Po3IxF2zcV2-8$E8Mn=qQJO^kvgPmipsLD>DyPz*AS?tddb6g)552 zCt_B9luZqkPjbsbatEd#-x$|-zolTErM5Fj==f`Y)XM2T*Yz@U1wu1pA*06Z#w}2} zspD?s#|3olHR@qwVQIJtvliOy>5Kl+K}hFIP2Of@i}^Le{(cH0EHGgoSax0SMAumZ zcb?UZlsWxlvm;&~Bg*)YE#j^|Z<(Pinx3$jD@ndtXIp%yLmYwbftg&)|J+-=FWVZpK~0<}GU=kFV{u)n4_ zWjX(@#x2{AaWr0-ntUy9aAqu1E4FvhJ%}q@ky7aYc8)IhyT;u6xZ*HISjJ}=H~F?? zO7Qn7dvDkaeQw#!TL1;ffhVsc9$cQ_m{}o^)SiownaN|KCK3FuDmfkg0LrI5LOd*& z4vo+S`-X$y5(@dQs-Vnk3jIQcLUV*eqAa)R3NKqsR);E7TyBtm?@oOJy>KMA8*VI9 z5KT6TSO~kj7tIhyn(cT5&j0IuR=ffU(^gw6uOd!~>`msP>$y(s@I3gJ-Ia-HN4WGvFWQGYrMgbs^L^`e`K#vKU^8`e4Jjh7B z(5LXg1I|hrk>4b++_1e`8u)FRPqAcThHE_FR*_-k43Z*njS@QyI68-q6F?_Z&|N zq=qzSExH@;)5?0xwTVZt7ls=3Vf103%7k?OTrk!j!$uH~c>~3?e8R_N)cUMM!)g2T z00I?iYaHJ*^Cs076|@D zlpTnpe%Q6ai#xv<@Kzv24&Ej3rakTEEO)_qs;T(0uh0$$K>ycNNX%>ws8WtD%WYAu z-15_So4~<%&%E{+$Ztzu`k(Lt)lX+#))bDX+_|N6_%_whXb}_`fKN!^@o}MX>n>Xv zHZfFzr$g$oCW7L?bsWSpg?3nN_VOPLmb zYHQQ1Ynh!qD;Zt5J2~TXpw;mU86k>j$>{twmNKoJNbQN&u7oC7C-PG?uZ22!{0PG^ls99@U1-hyNs z{f4uV;esqv>66C1XJDFXzDFGiWXlEw{5jE5(K($2_V*rxG(EeiA31W4{M>w*r)mjO z*y-)u6PQp7kxvRz-NJ5t*JGx!qmzX*YC!}5YY{dkDP5vFOlP`c&o>T#9$*zPc7kWd zm1@2BRs&Uk7(@#CcJ9LlCrbTN8s}S}rCvlJ4 zLwhdxJsBlv`U^l3cx>?KN-w`M9;N6$CSaBKt0S7e8VislA5~Tp==W@TH u_4(x0^t_9OI8M2lgf=y%b^goU|5iO4Wh=xWS-_vYAcLDoy$T)2r~e1YVKxf@ literal 0 HcmV?d00001 diff --git a/assets/vidzig.svg b/assets/vidzig.svg new file mode 100644 index 0000000..a6e1aeb --- /dev/null +++ b/assets/vidzig.svg @@ -0,0 +1,39 @@ + + + + diff --git a/src/main.zig b/src/main.zig index c7a06e1..e6051b3 100644 --- a/src/main.zig +++ b/src/main.zig @@ -3,6 +3,7 @@ const assets = @import("assets"); const routes = @import("routes.zig"); +const minify = @import("minify.zig"); const sendPlainResponseText = @import("status_response.zig").sendPlainResponseText; const DownloadQueue = @import("DownloadQueue.zig"); const Config = @import("Config.zig"); @@ -127,7 +128,17 @@ fn tryHandleRequest(state: *State, res: *std.http.Server.Response) !void { } else if (std.mem.eql(u8, path, "/static/index.js")) { try routes.static(res, assets.@"index.js", "application/javascript"); } else if (std.mem.eql(u8, path, "/static/index.css")) { - try routes.static(res, assets.@"index.css", "text/css"); + try routes.static(res, comptime minify.minifyCSS(assets.@"index.css"), "text/css"); + } else if (std.mem.eql(u8, path, "/static/vidzig.png") or + std.mem.eql(u8, path, "/favicon.ico")) + { + try routes.static(res, assets.@"vidzig.png", "image/png"); + } else if (std.mem.eql(u8, path, "/static/vidzig.svg")) { + try routes.static( + res, + comptime minify.minifyHTML(assets.@"vidzig.svg"), + "image/svg+xml", + ); } else if (std.mem.startsWith(u8, path, "/vids/")) { try routes.vidsRoute(state, res); } else { diff --git a/src/minify.zig b/src/minify.zig index 3f3e6ee..1a1b830 100644 --- a/src/minify.zig +++ b/src/minify.zig @@ -2,18 +2,30 @@ const std = @import("std"); /// Very basic comptime HTML minification pub fn minifyHTML(comptime html: []const u8) []const u8 { - var out: []const u8 = &[_]u8{}; + @setEvalBranchQuota(10000); + + var out: []const u8 = ""; var i = 0; while (i < html.len) { if (html[i] == '\n' or i == 0) { if (i != 0) { i += 1; } - while (html[i] == ' ') { + while (i < html.len and html[i] == ' ') { i += 1; } + + if (i < html.len and html[i] != '<') { + out = out ++ " "; + } } + if (i >= html.len) + break; + + if (html[i] == '\n') + continue; + out = out ++ [_]u8{html[i]}; i += 1; @@ -21,3 +33,24 @@ pub fn minifyHTML(comptime html: []const u8) []const u8 { return out; } + +/// Minify CSS. Guaranteed to break the majority of CSS files. +pub fn minifyCSS(comptime css: []const u8) []const u8 { + @setEvalBranchQuota(10000); + + var out: []const u8 = ""; + var i = 0; + while (i < css.len) { + const c = css[i]; + + const is_whitespace = std.ascii.isWhitespace(c); + + if (!is_whitespace or (i + 1 < css.len and css[i + 1] == '*')) { + out = out ++ [_]u8{c}; + } + + i += 1; + } + + return out; +} diff --git a/src/routes.zig b/src/routes.zig index 01aa7e6..e7ef495 100644 --- a/src/routes.zig +++ b/src/routes.zig @@ -50,6 +50,10 @@ pub fn indexRoute( \\ \\ \\ + \\
+ \\ logo + \\

Vidzig

+ \\
)); var paused = false;