From 41738d16d0f117bd46c31e8c0349644d695b3d7d Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 10:40:34 +0200 Subject: [PATCH 01/11] Update favicon with the new logo --- favicon.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/favicon.go b/favicon.go index 4dfc327bc..095288565 100644 --- a/favicon.go +++ b/favicon.go @@ -11,7 +11,7 @@ import ( ) // Elastic Icon -const faviconBase64 = "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AAfAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAB/4AAAf/BAAP//4AH///AD///8D/ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xf///9V////l////8f////h////6f///+P////M////n////17///8e////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8X////cf///8v////2///+//v89f/3+Oj/9fbh//b35f/6+/H//v78//////n////U////gP///yEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av///0f////H/////fr68P/n6rn/0th6/8PLT/+8xTr/usMz/7vENv/AyUf/zNNq/+DkpP/19uL////+/v///9T///9Z////BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E////af///+v9/fj/5eiy/8PMUP+zvh//sLsV/7C7Fv+wuxf/sLwX/7C7F/+wuxb/sLsV/7G8Gv+8xTr/2d6Q//j56//////z////f////woAAAAAAAAAAAAAAAD///8B////Bv///wX///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///9q////8/j5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//3////h/Pbp/+W1Pf/gpxn/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CnGf/irSn/8tqf///9+//x89f/w8tP/7C7F/+xvBn/sLsX/7C7Fv+3wSv/zdRs/+vtwf/+/fb/+v7//8n1//9x5f3/JNf8/xfU/P+J6f7/9v7///Xw5f/Cp2P/onoR/6J6EP+iehH/onoR/6J6Ef+iehH/onoR/6J6Ef+iehH/onoR/6J5EP+ogiH/7eXS//////v////4+e/X/+KuLP/gqBr/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gpxn/4asj//DUj//+/Pj/9Pbh/8jPXP+xvBn/usQ0/9LZff/w8c////76//X9//+68v7/X+H9/xzV/P8I0fz/CdL8/wrS/P8P0/z/c+X9/+/8///69u//yrJ3/6R8Ff+ieRD/onoR/6J6Ef+iehH/onoR/6J6Ef+iehH/onoR/6F5D/+ujDH/9PDl/////+X////7+e/U/+KuKv/gqBr/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kga/+GpH//uzoD//vrz//f46P/h5af/9PTa/////f/u/P//qe/+/0/e/f8V1Pz/B9H8/wrS/P8L0vz/C9L8/wvS/P8K0vz/C9L8/17h/f/k+v///fr2/9K+jf+mfxv/oXkP/6J6Ef+iehH/onoR/6J6Ef+iehH/onoR/6B4Df/ApWD//fz6/////7L////q+/Tj/+SyN//gpxn/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoGv/gqBz/7Mp1//779v//////5fr//5js/v9A3P3/D9P8/wfR/P8K0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wnS/P9L3v3/1/j////9+//ayqH/qYQk/6F5Dv+iehH/onoR/6J6Ef+iehH/onoQ/6V+Gf/h1LP/////9v///17///++/vz4/+nBXf/gpxf/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gpxf/6L9Z///89f/G9f//Ndr9/wvS/P8I0fz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8I0fz/Odr9/8f1/////v7/4tW1/66LL/+heA7/onoR/6J6Ef+iehH/oXgO/8Wra//8+vf/////uf///xL///9w////+/Pdp//gqR3/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//hqiD/9eGw//v///9i4v3/BtH8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/CNH8/yvY/P+18f7//v///+ngyP+zkj7/oXgO/6F5D/+heQ//vaFY//Xw5f/////n////QAAAAAD///8e////zf358P/pwFv/4KcX/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/+CoG//gqBv/4Kgb/9+mFv/nvFD///nw/8n1//8d1fz/CtL8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wjS/P8f1vz/oO3+//v////w6Nf/upxP/6qFJf/Mtn3/9vPp/////+v///9e////AQAAAAAAAAAA////XP////X57tT/5bdE/+CnF//gqBv/4Kgb/+CoG//gqBr/4KcZ/9+nF//gpxn/4asj/+SzOf/04K7//f///2/k/f8I0fz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8J0vz/FtT8/4vp/v/3/v//9vHm/+7n1P/9/fv+////0f///07///8CAAAAAAAAAAAAAAAA////Bv///4b////6+e/V/+nAXP/gqR7/36YX/+CoGv/irCf/5bZB/+rFZ//x1pb/9+jC//335f////v/3Pj//yfX/P8J0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/CtL8/w/T/P955v3/9/3//////+v///99////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wv///9+////7/358P/z3qr/7cx7//LboP/57Mv//vrr/////P/+/f//9vD//+na/f/58v7/3vn//ybX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/P8J0vz/a+P9//b9///////U////IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Af///0T////F////+/z6///07P3/8ej9//jy/v/+/v/9////zf///5z////1y/X+/zXa/f8H0fz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/CtL8/wrS/P9c4f3/6fv///////H///9XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8V////XP///53///+8////vv///6P///9l////G////wj///+K////+9L3/v9N3v3/C9L8/wjS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wvS/P8L0vz/C9L8/wrS/P8I0fz/FNT8/3Pl/f/r+///////9////3j///8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8I////Cf///wIAAAAAAAAAAAAAAAD///8M////h/////Xs+///j+r+/zHZ/P8M0vz/B9H8/wjR/P8J0vz/CdL8/wnS/P8H0fz/B9H8/xLT/P9G3f3/r/D+//j+///////w////dv///wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////B////2H////a/v///+P6//+j7v7/ZeL9/z7b/f8s2Pz/KNf8/zDZ/P9H3f3/dOX9/7bx/v/w/P///////v///9H///9T////BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8m////if///9r////7/f////H8///l+v//4vn//+j7///1/f///v////////n////U////ff///x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av///yT///9p////qv///9b////s////8v///+r////T////pP///2H///8f////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wH///8AAP/8AD///wAA//AAH///AAD/4AAP//8AAP/AAAOH/wAA/4AAAAH/AAD/AAAAAP8AAP8AAAAAfwAA/gAAAAA/AAD+AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAAfAAD8AAAAAA8AAPwAAAAAAwAA8AAAAAADAADgAAAAAAEAAMAAAAAAAQAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAIAAAAAAAwAAgAAAAAAHAADAAAAAAA8AAMAAAAAAPwAA8AAAAAA/AAD4AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAB/AAD8AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/hwAAD/wAA///gAAf/AAD///gAD/8AAP///AA//wAA////gP//AAA=" +const faviconBase64 = "PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMjguNSAxNTQuNDg3TDI0IDEwMVYxOTkuMzY4TDEyOC41IDI1NkwyMzMgMTk5LjM2OFYxMDFMMTI4LjUgMTU0LjQ4N0wxMjguNSAxNzIuNjY1TDIxOC4wNzEgMTI1LjQwMlYxOTAuODE3TDEyOC41IDIzOS4zNThMMzguOTI4NiAxOTAuODE3VjEyNS40MDJMMTI4LjUgMTcyLjY2NUwxMjguNSAxNTQuNDg3WiIgZmlsbD0iIzUzNTc2NiIvPgo8cGF0aCBkPSJNOTUuOTk1OCAxMjMuNDQzTDEyNy45OTYgMTQxLjE4TDE1OS45OTYgMTIzLjQ0M0wxNTkuOTk2IDEwOC44NUwxMjcuOTk2IDEyNi41ODdMOTUuOTk1OCAxMDguODQ5TDk1Ljk5NTggMTIzLjQ0M1oiIGZpbGw9IiMwMEJGQjMiLz4KPHBhdGggZD0iTTk1Ljk5NjIgOTcuNDg5MUwxMjcuOTk2IDExNS4yMjZMMTU5Ljk5NiA5Ny40ODkyTDE1OS45OTYgODIuODk1NEwxMjcuOTk2IDEwMC42MzJMOTUuOTk2MiA4Mi44OTUzTDk1Ljk5NjIgOTcuNDg5MVoiIGZpbGw9IiMwMEJGQjMiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMjcuOTk2IDc0LjA1MDFMMTUzLjQzIDU5LjI2ODFMMTUzLjQzIDMwLjAwMzlMMTI3Ljk5NiAxNS4yMjE4TDEwMi41NjIgMzAuMDAzOUwxMDIuNTYyIDU5LjI2ODFMMTI3Ljk5NiA3NC4wNTAxWk04OS41OTYxIDY2Ljk1NEwxMjcuOTk2IDg5LjI3MTlMMTY2LjM5NiA2Ni45NTRMMTY2LjM5NiAyMi4zMThMMTI3Ljk5NiA5LjA1MzAyZS0wNkw4OS41OTYxIDIyLjMxOEw4OS41OTYxIDY2Ljk1NFoiIGZpbGw9IiMwMEJGQjMiLz4KPHJlY3QgeD0iMTIxIiB5PSIxNjAiIHdpZHRoPSIxNSIgaGVpZ2h0PSI4NCIgZmlsbD0iIzUzNTc2NiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTY4LjM2MzIgNzVMMjMuNDYyMiA5OS44MzE5VjE5OS43MTRMMzguNDI5MyAxOTQuMzI4TDM4LjQyOTIgMTc1Ljc3MVYxMDguNTgxTDY4LjM2MzIgOTIuMDI2MVY3NVpNMTg4LjA5OSA5Mi4wMjYzTDIxOC4wMzMgMTA4LjU4MUwyMTguMDMzIDExMC40N1YxOTQuMzI4TDIzMyAxOTkuNzE0Vjk5LjgzMTlMMTg4LjA5OSA3NS4wMDAyVjkyLjAyNjNaIiBmaWxsPSIjNTM1NzY2Ii8+Cjwvc3ZnPgo=" func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { faviconBlob, err := base64.StdEncoding.DecodeString(faviconBase64) @@ -20,7 +20,7 @@ func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *htt } return func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "image/x-icon") + w.Header().Set("Content-Type", "image/svg+xml") cacheHeaders(w, cacheTime) w.Write(faviconBlob) }, nil From d5cc05ec09a65731391d274d13e628c944fd5240 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 10:46:57 +0200 Subject: [PATCH 02/11] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40a723a00..0f07c1546 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +* Update favicon to be the Elastic Package Registry logo. [#858](https://github.com/elastic/package-registry/pull/858) + ### Deprecated ### Known Issues From 9a3ffdb1cded03b7a8bcdca39d062d43b35a6473 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 10:59:00 +0200 Subject: [PATCH 03/11] Replace favicon test image --- main_test.go | 2 +- testdata/generated/favicon.ico | Bin 15086 -> 0 bytes testdata/generated/favicon.svg | 8 ++++++++ 3 files changed, 9 insertions(+), 1 deletion(-) delete mode 100644 testdata/generated/favicon.ico create mode 100644 testdata/generated/favicon.svg diff --git a/main_test.go b/main_test.go index 31bd4a290..328194c66 100644 --- a/main_test.go +++ b/main_test.go @@ -92,7 +92,7 @@ func TestEndpoints(t *testing.T) { {"/search?type=input&prerelease=true", "/search", "search-input-packages.json", searchHandler(indexer, testCacheTime)}, {"/search?type=input&package=integration_input&prerelease=true", "/search", "search-input-integration-package.json", searchHandler(indexer, testCacheTime)}, {"/search?type=integration&package=integration_input&prerelease=true", "/search", "search-integration-integration-package.json", searchHandler(indexer, testCacheTime)}, - {"/favicon.ico", "", "favicon.ico", faviconHandleFunc}, + {"/favicon.ico", "", "favicon.svg", faviconHandleFunc}, // Removed flags, kept to ensure that they don't break requests from old versions. {"/search?internal=true", "/search", "search-package-internal.json", searchHandler(indexer, testCacheTime)}, diff --git a/testdata/generated/favicon.ico b/testdata/generated/favicon.ico deleted file mode 100644 index 6c72369ca697a07134042327a49538956f2b3138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmcIr2Y8fK)*cu8>VgF+Dqz=D*Rt!Xs|(oubyY0rqS#hlW!F{FwO|8T%VS~f3a&_1 zI>aOtB|v}_(jY(zsgucMQYOh{CQ~x)``-UOcjgO|Arlga-}Ah4zjE(A=iYnnx#ym9 z$7DLhG{7`ykcsIi(^H3DdWd`4$+*3LE#yo=^&iv)MJ0H{5q@RQ24X0rB zrZbVX{ja*cB|W7*9D1+~vb%U7)9FryCM|Hj&|GCOtC88Kz0{4gY?4MAGQrC3^%imSJM zhO4qa!S}X&Gs}#ODL=g2{8?p$W~5x~{hCduA>FbBj}V^sIT0-!)sk_sa!(m#pihoE-JFjSSy#x3mOqjzaIa%UL7-WA4?#1*V7sWcZqeRB(P zQ(tj)c$z2cTHx09in$eyo5rIl<5{%i&BIDt3u$UBA1N#4RUNGB{4yOI?JaG(*ZvUu z{_w~cgvMBMT}^AJyRmAr7mEwR7+ezGr@T?mf9-lT%bprD{v!%k_|0Gcr46%gYr~q= zewI?~*NW_|TadZ^ zUZie3P0fGNg9b#Grsv#%+WKV(YaLZAbF0+J^jP9|#FfP9M5j*diKg+5`7aRK7TY4M z-F&{Hw^#QX`YWnOsf$uJjzmf2dkBZU!oy2pT}z`rZ?Om5Zod|?@ZC2ASD^i0%qQc$ zsIhrH)})_D+C$>>W>@;gdLVsKT{|1@a8Ucol7WYJF2sbwd3d!f7291_=s*_hJ#&8? zFwYJCK(l*G-fgPCWA%Mc_cA6~1><4!*>TVIIrtOTldHFVs?xi*e}_U>9jnIY#IJhd zf!{x?YfMt>WKZw0mL)E(8+LntM=FMH`U!DD_8V^U%+syheNYs9Q8%jCeleK-q0nm@|Rad_R zD;kR+GzGG*OZqg|==P9bWbw2f=no5pz2zANclT-Rjj<3JD6N=|e2(?q9P=lOmf}Nm zI+B}9Q0Z*}=Tr;nKT90f9S?kex~_*yMZbuBW7ON*ROsjId<3454`z0Cv&)9&+I&>y zEkMqy$;e558IF1`8eDFPQ3emZA3%)L!-1TT#~NyPmm;&^9`-?R=3cBk3`M#5Q#fq9 zkh$bZq;tj+47)FuR@Zy6i8j(ka=RsXea4(INV(BZ4Yj*{m|e|Qf(3{|qSded2`vCT()`6m1@?G)1LO4p#T zc$hK}B^hF>B9EBstKSIAvNI#}#oiJ=mW+UdJOz9<6qQe>J~*`t4>C5==5_P-GH zT2W^HjBC*8q#3cp*Joa?WZl`m8x{T#KA`1$J8i)5sH*uKF0UCod^)ByaFN~ql4BoCGF1l`!| z(eb2J$0*VgJ2uuHl>1?{$-bbK;&j#{WAWor`i49V!uM|ugSB*>(Epyub?y0v?c|tu z_I(U(MSnP~t1g7!u^aERpT*V`o6)c#4g1wdg@@xg&EISU*Mm0Xr%u7b*H2ROLHZ+` zx*!zv)spsA#4{ncC16{7t&;t&Jji?)#=aR0N6z!8=m@F4Hf(o;UU#YRb}aE!osNbM zABxjwU^(|Dd8x00_PvvIA14kWjw4q1>Nj!jU#Z3+B8$UOyZmg}){aF>_9TSbid5SZ zwK)+FlK-9>9hJTS+%%%Yp^gI58&A+;ja#w$2J5>17YT zf6RsY!Vsq0_0D}$PxRuyiLBgGrBOe?Od6g0n^^jC&u=3G9^IVsx*IdO-;sTfq=J%U zKbE%ZYE0wn-`}&)=biMB7=C|{GPTjujnRZ2U)*ak;5yD5tmtGWbzRP~6 zFESv!3H|468mmVR!QDys7rzas3f;5*Lyw|q(3ke7OmV~N)^SPMzWcxZwO{sWE1a}I zBX%%%P2FGo{wv~h+wKq+JnD+{|Lu|XFZ`PeEe#s(|V`nddAT%QOW5_3X+-PYcuc|EOK8^>iU-%a&tsCm0l!wKXekscD>q}?M(d%i;lN4}h8`?Nn} z{=e^KD!UxmP!6->|ob5B`okTuvl6 zh2Twg>6l8n_&fE>Q^dPXIyR85D-5p0SV~-c@D%s0f%Og~?j^*IGjoKwDk_>X$A2Jt zwJ%3HbDG9LH;qKtbmSPn$uyD}=-d|rYUoNxC#LPoj=Yig1BfHi_bn^+NxdV(gGkJ8 zno43MJOJVkl@5A@==4+UcbCY_y}U?d2qEju*F-iUdypo=O5_uBh=+&~L_*!rOLF~| zjl2lolL@g=sXKIVZ$y7bBk21D{j#86gnJsTFqu7`?9Uv%hAg!Hu* z3_8(Z{|USHyh_{g4(^fvgrB$m9_usyNZ-j#$lv`B)YL6xo5UQ_DZ;896PO;>1DRjs z6KNhwOd^^!%@12+GPdTAQ~njPyT#sDc0YZ;hW#J0$A_zSl~sQN`Yu>p&BLiokB()O z&th*KP8=rpvEL5%p7lw;|ATM~4?Fiv>GWCkX8#)5YYs(5{#|Hu6|x#7Q`4CWzb6th zCNqiEL@MzmaSw6)!SXKUS=Btan}{(7(*~A5g~$tYJGZ0wc_kb1eD&p7+OTQc^>BMDSuON> zzYE`5v+)%D8Taj&i-|iI;EnP%*y5-{P*d|?CeJMg+6I<=RS3yEjNj+>h40wBGA~Li z-uKFr<^V{!d<#kb+lGtxh^En{;&$I^x!WIm&zAu@NT3s77rB8N29-88X$YKePVz;wTbyZ*R+7@tB5Y_AO6MX zv}W^pXm=N(w!?*S1>ZvY+u%Dky(Z@iH5bT>DBpzs&G>dO?@>gWtflMeyN&3;{^Ea_ z@*&qZrNF~E`o!+VO73I%HtwZes~UHa70`162_yIFVqVe9yF_2FPCvVgf9gQxCbpdD zp*>YIXn8>5yIp+BvAl~6t+kgj7wGZ8dA(wunV5GNQQqvx;2L`x`R~8Jm%2nA^L9N+ z5<2G9<#zg_4WIP2lpFCA|GV@@)cEKy0(KHZ`@sK6%wN(>-=D;XdgCYUOB<#C({pZw zMmtY*{r~07#QmJBQ_4~>r!EIsZD!cGo&}WIB<#aWh;R8?qSL>Us6EVcERpGQ7cZYy;0y(@%iVyMPzThCMV>>xHaO}EQJKFG`D@-lb>VUZJCq)h!I(mH zv7chw!Ed7XUn1(oE-oy2k^J}MC+@p!$r*)pTP{XB`IkxHZ*N3XbtXzOXJYG8`qw`j zjm6VXqkr*u<a zqz!3v$J2K&ZceqwQ$9D|i@((x?y$q2@kGSWPyec%uV`3*2Lf%yYClzNovY@uQ%y}*G@!5-a;uJBAz2;zn{W$89a;eit-D0@fFJ%5uP*g+jA+Z zI;;(=D7zQ+*&Y(UWgczGy%ipx8J@N}{P^+Z(O6C-hSMAV)fmhf5Bht_wz9EBZah9) zT3oCp#@Eg^h!0xw$b@Tb*$`cqd7+7uO_= zg(PZ=_~}=?Pu=AZcL5}BxLj<(=B%d^$4a8{5^K`M@YJki6Lhq;<p?>8hRa(NnCfHX0 zd0*Lyk9%-V)UKfIRX&F$LuwAn-rblFl8T(j*@S|kr_tQHnXxP%g5))aE6`;6de1Bk zL(a&&Pk$KQ#_&3M)@jjW(K!&Sa}vlD^^)k;R>m@U$sF(p+DcKo@`A{`jpsT3nQgEv zI|I(5k2!393Z4bq*vF!0e$MyQor7TrSF`j>`SlcryN5AIxH;FcpC3p2wwC2ACo>fJlC69ViTmWINN9+?P z<&*P`aWhm07)qlvylq_G8UrjK5f?fRsN;@!oS4S)f~ zIX0CxEuY+uFk_PIh~v24_D8=Pb%^|5$n`+hbY5A+vGIH+dS>493A;Hbi2vP{fPc1Y z{zFbUc_yQrG*0i~{J6nWUs93B`xw&~+m+XMM5n$_#JBODd1YPBciS};qwh|BWGtj@ z7Pe8GdlIwm&pCVy`~N$xW4uIzK5FpR+mvPAk-|HZ{P^ZhjzKqaB<WwVQ%&+GlJ^e$0Gh;LC%~kf36)_-}-n4iVFlUGuJVZ zp@SU*nYaJsc?F*5kV|4OXY`eCBR|WEPwRRjlL*O{!PBC_#d9KluDvvMg-QYOE#c*V zC6o<)AZ?I-7fj@ShUYKjl4*6H!OOvuWMO=TIP_rnjxWplBo-{ZN_->U20VuE-Xpv%YL-k diff --git a/testdata/generated/favicon.svg b/testdata/generated/favicon.svg new file mode 100644 index 000000000..010b80a2c --- /dev/null +++ b/testdata/generated/favicon.svg @@ -0,0 +1,8 @@ + + + + + + + + From 9b5ceb501eb3b74d3064f6d63f584386c127d182 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 18:23:58 +0200 Subject: [PATCH 04/11] Test with favicon in ico and svg --- favicon.go | 28 +++++++++++++++++++--------- favicon.ico | Bin 0 -> 15086 bytes favicon.svg | 8 ++++++++ main.go | 1 + 4 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 favicon.ico create mode 100644 favicon.svg diff --git a/favicon.go b/favicon.go index 095288565..f1e803807 100644 --- a/favicon.go +++ b/favicon.go @@ -5,23 +5,33 @@ package main import ( - "encoding/base64" + _ "embed" "net/http" + "strings" "time" ) // Elastic Icon -const faviconBase64 = "PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMjguNSAxNTQuNDg3TDI0IDEwMVYxOTkuMzY4TDEyOC41IDI1NkwyMzMgMTk5LjM2OFYxMDFMMTI4LjUgMTU0LjQ4N0wxMjguNSAxNzIuNjY1TDIxOC4wNzEgMTI1LjQwMlYxOTAuODE3TDEyOC41IDIzOS4zNThMMzguOTI4NiAxOTAuODE3VjEyNS40MDJMMTI4LjUgMTcyLjY2NUwxMjguNSAxNTQuNDg3WiIgZmlsbD0iIzUzNTc2NiIvPgo8cGF0aCBkPSJNOTUuOTk1OCAxMjMuNDQzTDEyNy45OTYgMTQxLjE4TDE1OS45OTYgMTIzLjQ0M0wxNTkuOTk2IDEwOC44NUwxMjcuOTk2IDEyNi41ODdMOTUuOTk1OCAxMDguODQ5TDk1Ljk5NTggMTIzLjQ0M1oiIGZpbGw9IiMwMEJGQjMiLz4KPHBhdGggZD0iTTk1Ljk5NjIgOTcuNDg5MUwxMjcuOTk2IDExNS4yMjZMMTU5Ljk5NiA5Ny40ODkyTDE1OS45OTYgODIuODk1NEwxMjcuOTk2IDEwMC42MzJMOTUuOTk2MiA4Mi44OTUzTDk1Ljk5NjIgOTcuNDg5MVoiIGZpbGw9IiMwMEJGQjMiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMjcuOTk2IDc0LjA1MDFMMTUzLjQzIDU5LjI2ODFMMTUzLjQzIDMwLjAwMzlMMTI3Ljk5NiAxNS4yMjE4TDEwMi41NjIgMzAuMDAzOUwxMDIuNTYyIDU5LjI2ODFMMTI3Ljk5NiA3NC4wNTAxWk04OS41OTYxIDY2Ljk1NEwxMjcuOTk2IDg5LjI3MTlMMTY2LjM5NiA2Ni45NTRMMTY2LjM5NiAyMi4zMThMMTI3Ljk5NiA5LjA1MzAyZS0wNkw4OS41OTYxIDIyLjMxOEw4OS41OTYxIDY2Ljk1NFoiIGZpbGw9IiMwMEJGQjMiLz4KPHJlY3QgeD0iMTIxIiB5PSIxNjAiIHdpZHRoPSIxNSIgaGVpZ2h0PSI4NCIgZmlsbD0iIzUzNTc2NiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTY4LjM2MzIgNzVMMjMuNDYyMiA5OS44MzE5VjE5OS43MTRMMzguNDI5MyAxOTQuMzI4TDM4LjQyOTIgMTc1Ljc3MVYxMDguNTgxTDY4LjM2MzIgOTIuMDI2MVY3NVpNMTg4LjA5OSA5Mi4wMjYzTDIxOC4wMzMgMTA4LjU4MUwyMTguMDMzIDExMC40N1YxOTQuMzI4TDIzMyAxOTkuNzE0Vjk5LjgzMTlMMTg4LjA5OSA3NS4wMDAyVjkyLjAyNjNaIiBmaWxsPSIjNTM1NzY2Ii8+Cjwvc3ZnPgo=" +//go:embed favicon.ico +var faviconICOBlob []byte -func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { - faviconBlob, err := base64.StdEncoding.DecodeString(faviconBase64) - if err != nil { - return nil, err - } +//go:embed favicon.svg +var faviconSVGBlob []byte +func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { return func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "image/svg+xml") + var response []byte + switch { + case strings.HasSuffix(r.URL.Path, ".ico"): + w.Header().Set("Content-Type", "image/x-icon") + response = faviconICOBlob + case strings.HasSuffix(r.URL.Path, ".svg"): + w.Header().Set("Content-Type", "image/svg+xml") + response = faviconSVGBlob + } + w.Header().Set("Content-Type", "image/x-icon") + cacheHeaders(w, cacheTime) - w.Write(faviconBlob) + w.Write(response) }, nil } diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..12ec37584e51d572f5ff0b4e1557b64b3a45966a GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 000000000..010b80a2c --- /dev/null +++ b/favicon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/main.go b/main.go index 91be9f01c..a307a38aa 100644 --- a/main.go +++ b/main.go @@ -331,6 +331,7 @@ func getRouter(logger *zap.Logger, config *Config, indexer Indexer) (*mux.Router router.HandleFunc("/categories", categoriesHandler(indexer, config.CacheTimeCategories)) router.HandleFunc("/health", healthHandler) router.HandleFunc("/favicon.ico", faviconHandleFunc) + router.HandleFunc("/favicon.svg", faviconHandleFunc) router.HandleFunc(artifactsRouterPath, artifactsHandler) router.HandleFunc(signaturesRouterPath, signaturesHandler) router.HandleFunc(packageIndexRouterPath, packageIndexHandler) From 798fb0c458235cee2cca106b57012fc3b0b57131 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 18:36:42 +0200 Subject: [PATCH 05/11] Update tests --- main_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main_test.go b/main_test.go index 328194c66..49f01f579 100644 --- a/main_test.go +++ b/main_test.go @@ -92,7 +92,8 @@ func TestEndpoints(t *testing.T) { {"/search?type=input&prerelease=true", "/search", "search-input-packages.json", searchHandler(indexer, testCacheTime)}, {"/search?type=input&package=integration_input&prerelease=true", "/search", "search-input-integration-package.json", searchHandler(indexer, testCacheTime)}, {"/search?type=integration&package=integration_input&prerelease=true", "/search", "search-integration-integration-package.json", searchHandler(indexer, testCacheTime)}, - {"/favicon.ico", "", "favicon.svg", faviconHandleFunc}, + {"/favicon.ico", "", "favicon.ico", faviconHandleFunc}, + {"/favicon.svg", "", "favicon.svg", faviconHandleFunc}, // Removed flags, kept to ensure that they don't break requests from old versions. {"/search?internal=true", "/search", "search-package-internal.json", searchHandler(indexer, testCacheTime)}, From 812d361b705b4dfca0f4f74811c8c9f1aa4b9b6d Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 19:27:07 +0200 Subject: [PATCH 06/11] Remove duplicated set header --- favicon.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/favicon.go b/favicon.go index f1e803807..185ae7a39 100644 --- a/favicon.go +++ b/favicon.go @@ -29,8 +29,6 @@ func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *htt w.Header().Set("Content-Type", "image/svg+xml") response = faviconSVGBlob } - w.Header().Set("Content-Type", "image/x-icon") - cacheHeaders(w, cacheTime) w.Write(response) }, nil From 88913345ee2a30baa9cd5b8d2451ff5a455b6316 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Fri, 29 Jul 2022 19:53:18 +0200 Subject: [PATCH 07/11] Added missing favicon as testdata --- testdata/generated/favicon.ico | Bin 0 -> 15086 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 testdata/generated/favicon.ico diff --git a/testdata/generated/favicon.ico b/testdata/generated/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..12ec37584e51d572f5ff0b4e1557b64b3a45966a GIT binary patch literal 15086 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 literal 0 HcmV?d00001 From edacab963095ff36639b473dfd8c56c0f86639d2 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Tue, 9 Aug 2022 11:59:41 +0200 Subject: [PATCH 08/11] Just update favicon.ico --- favicon.go | 17 ++--------------- favicon.svg | 8 -------- main.go | 1 - main_test.go | 1 - testdata/generated/favicon.svg | 8 -------- 5 files changed, 2 insertions(+), 33 deletions(-) delete mode 100644 favicon.svg delete mode 100644 testdata/generated/favicon.svg diff --git a/favicon.go b/favicon.go index 185ae7a39..ecaf60b33 100644 --- a/favicon.go +++ b/favicon.go @@ -7,29 +7,16 @@ package main import ( _ "embed" "net/http" - "strings" "time" ) -// Elastic Icon //go:embed favicon.ico var faviconICOBlob []byte -//go:embed favicon.svg -var faviconSVGBlob []byte - func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { return func(w http.ResponseWriter, r *http.Request) { - var response []byte - switch { - case strings.HasSuffix(r.URL.Path, ".ico"): - w.Header().Set("Content-Type", "image/x-icon") - response = faviconICOBlob - case strings.HasSuffix(r.URL.Path, ".svg"): - w.Header().Set("Content-Type", "image/svg+xml") - response = faviconSVGBlob - } + w.Header().Set("Content-Type", "image/x-icon") cacheHeaders(w, cacheTime) - w.Write(response) + w.Write(faviconICOBlob) }, nil } diff --git a/favicon.svg b/favicon.svg deleted file mode 100644 index 010b80a2c..000000000 --- a/favicon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/main.go b/main.go index a307a38aa..91be9f01c 100644 --- a/main.go +++ b/main.go @@ -331,7 +331,6 @@ func getRouter(logger *zap.Logger, config *Config, indexer Indexer) (*mux.Router router.HandleFunc("/categories", categoriesHandler(indexer, config.CacheTimeCategories)) router.HandleFunc("/health", healthHandler) router.HandleFunc("/favicon.ico", faviconHandleFunc) - router.HandleFunc("/favicon.svg", faviconHandleFunc) router.HandleFunc(artifactsRouterPath, artifactsHandler) router.HandleFunc(signaturesRouterPath, signaturesHandler) router.HandleFunc(packageIndexRouterPath, packageIndexHandler) diff --git a/main_test.go b/main_test.go index 49f01f579..31bd4a290 100644 --- a/main_test.go +++ b/main_test.go @@ -93,7 +93,6 @@ func TestEndpoints(t *testing.T) { {"/search?type=input&package=integration_input&prerelease=true", "/search", "search-input-integration-package.json", searchHandler(indexer, testCacheTime)}, {"/search?type=integration&package=integration_input&prerelease=true", "/search", "search-integration-integration-package.json", searchHandler(indexer, testCacheTime)}, {"/favicon.ico", "", "favicon.ico", faviconHandleFunc}, - {"/favicon.svg", "", "favicon.svg", faviconHandleFunc}, // Removed flags, kept to ensure that they don't break requests from old versions. {"/search?internal=true", "/search", "search-package-internal.json", searchHandler(indexer, testCacheTime)}, diff --git a/testdata/generated/favicon.svg b/testdata/generated/favicon.svg deleted file mode 100644 index 010b80a2c..000000000 --- a/testdata/generated/favicon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - From 0c52a9bbf4229c22324fab2a90b70e99e566ccd0 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Tue, 9 Aug 2022 12:19:50 +0200 Subject: [PATCH 09/11] Rename favicon variable --- favicon.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/favicon.go b/favicon.go index ecaf60b33..19495b1d2 100644 --- a/favicon.go +++ b/favicon.go @@ -11,12 +11,12 @@ import ( ) //go:embed favicon.ico -var faviconICOBlob []byte +var faviconBlob []byte func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { return func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "image/x-icon") cacheHeaders(w, cacheTime) - w.Write(faviconICOBlob) + w.Write(faviconBlob) }, nil } From b32932e62552a77cbd4f32c8588d8f71979b4555 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Tue, 9 Aug 2022 16:22:12 +0200 Subject: [PATCH 10/11] Add more formats of EPR logo --- docs/img/elastic_package_registry-logo.svg | 8 ++++++++ docs/img/favicon-16x16.png | Bin 0 -> 968 bytes docs/img/favicon-32x32.png | Bin 0 -> 1567 bytes favicon.ico => docs/img/favicon.ico | Bin favicon.go | 2 +- 5 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 docs/img/elastic_package_registry-logo.svg create mode 100644 docs/img/favicon-16x16.png create mode 100644 docs/img/favicon-32x32.png rename favicon.ico => docs/img/favicon.ico (100%) diff --git a/docs/img/elastic_package_registry-logo.svg b/docs/img/elastic_package_registry-logo.svg new file mode 100644 index 000000000..010b80a2c --- /dev/null +++ b/docs/img/elastic_package_registry-logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/img/favicon-16x16.png b/docs/img/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d113fc95f34993f0edfa6c10c59f4b4b724315 GIT binary patch literal 968 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>`dZDu&M zIS9-R4oeRXgNUax?A;918yKDeR2CeO8XTSq(h`v#7@h*M<>01(@U)7k*8ArTPmKrJ9;ArU~Uvx2~O0l9&J*+2&X1wqb; z0OC*)Ilc18ua%nTla&|#Jhvw9 z?kbaRorzD&IZIy5o%*VlXZFsc!UYYp3!l`LRd+mMx;axqZo&2WOE0PD?K@`5v*_A+ zpe2k+-tI1uvo?K^0CG4BJR*yM^cxUntkfvn3uLgDc>21sKVz5WS2elUn8XAW+Un`z z7$R}m_xx3{rT_uf3(8%rWr<1U-LVPf*Zg7%?p=r!2L^A~vsLPaJ>EzXoSEJqe~m6Fnq4j#WrL>P+E!>7&-0 zqZh9bpfgqbYSh|$8QUyaD>&ZzZNDzhWB7|PLE3*=QQ$(SvQD9s#!R1&7OiO75VeLg z+Whvk*ePY_{yzL+{k3FYO#b&L&Y#bG{`zmlU2%&_k@>|L7V(yEr+qAXP8FD1G)j8!4co@T!oAlAy$Lg@U5|w9K4Tg_6pG zRE5lfl4J&kiaC!z@o*G|X=t4CKYhmYX%GXmGPhnbx3IFX_hb=fVFi~4lfx;@%9}$J qPT#n4;>ejJGDp}?H+U@Y(qnifE?Dx($#g2v3I=5RgD#@{+JAF&hyH5mMta&|n=Dwd1Hb z6^qu2XrYRd0Lmf+jn-)pD^eH6MsNWIWOEb?!x5@aac?k02N0G6TDeikspb~0IQC3vT2nE1wG;R|s0s=sj8Z;V5g9=nvgT_jrQGZfs!~mw` z^fVS=_zKXd!oc+vD7uXiF97vbrV@)Qh~;jJi4n25VkSq#WQ#GFQi;tbp+*&pD>9Zu zC<+IPaK$W$G=VjhpsWnrN~317jY*j2ir|ByJ1~rKK%&Vck_4-m5W*29CJGV~BnVfC z*}HMW=+Nj^qe9rJP=XQv4?Pvsl+)>3A@Q@cF`&bP%$Q6}OlNY0Gje<;8;ikBcxvbk zwnd$soQwgCCQ(!X_d!t}JSIGm$r8jfI6@?WKeLH|882XR#L%iSBSbjx6N@nqY_U?Q zgfYC6xVRL!gQU?xZyj5HIGk(>&fL!+g`TVQd-|8|UxsTkWUW?>G+ zC<-q^4O!FE(`XHm3S~;<2%QN$)OD+D4v$SHzSa6Q4<(pA>{+|Fi0BaRSv9!c$x<;q`YP-vu#iQ@ zXTjW4>@_naUCe|@yqp#jf$zdQ&Gqmv%|i-c?J2z}w&57VjvrmZUX&`RMf8O(|;<_J(DGM z=9029v#xgeIA48J+_C59=WABxeb|^^5Ox3ZJC)s#cddstjK!c(})GBZSy?Lt@iZkf?KaQ~A~0?;Dpl=ASDeSZTU*oLA2 literal 0 HcmV?d00001 diff --git a/favicon.ico b/docs/img/favicon.ico similarity index 100% rename from favicon.ico rename to docs/img/favicon.ico diff --git a/favicon.go b/favicon.go index 19495b1d2..9e40fa518 100644 --- a/favicon.go +++ b/favicon.go @@ -10,7 +10,7 @@ import ( "time" ) -//go:embed favicon.ico +//go:embed docs/img/favicon.ico var faviconBlob []byte func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { From 044d62b48f4a0767078b0e601815a1c416b99042 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Date: Tue, 9 Aug 2022 17:22:37 +0200 Subject: [PATCH 11/11] Rename folder for logos/icons --- favicon.go | 2 +- {docs/img => img}/elastic_package_registry-logo.svg | 0 {docs/img => img}/favicon-16x16.png | Bin {docs/img => img}/favicon-32x32.png | Bin {docs/img => img}/favicon.ico | Bin 5 files changed, 1 insertion(+), 1 deletion(-) rename {docs/img => img}/elastic_package_registry-logo.svg (100%) rename {docs/img => img}/favicon-16x16.png (100%) rename {docs/img => img}/favicon-32x32.png (100%) rename {docs/img => img}/favicon.ico (100%) diff --git a/favicon.go b/favicon.go index 9e40fa518..88cc12ae6 100644 --- a/favicon.go +++ b/favicon.go @@ -10,7 +10,7 @@ import ( "time" ) -//go:embed docs/img/favicon.ico +//go:embed img/favicon.ico var faviconBlob []byte func faviconHandler(cacheTime time.Duration) (func(w http.ResponseWriter, r *http.Request), error) { diff --git a/docs/img/elastic_package_registry-logo.svg b/img/elastic_package_registry-logo.svg similarity index 100% rename from docs/img/elastic_package_registry-logo.svg rename to img/elastic_package_registry-logo.svg diff --git a/docs/img/favicon-16x16.png b/img/favicon-16x16.png similarity index 100% rename from docs/img/favicon-16x16.png rename to img/favicon-16x16.png diff --git a/docs/img/favicon-32x32.png b/img/favicon-32x32.png similarity index 100% rename from docs/img/favicon-32x32.png rename to img/favicon-32x32.png diff --git a/docs/img/favicon.ico b/img/favicon.ico similarity index 100% rename from docs/img/favicon.ico rename to img/favicon.ico