From 96f80773c2b91f221738259737fa549d899e337d Mon Sep 17 00:00:00 2001 From: Siomek101 <94121336+Siomek101@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:13:01 +0200 Subject: [PATCH] yipee head --- Program.cs | 19 ++++++++++++++++--- bin/Debug/net9.0/myownhttp.dll | Bin 18432 -> 18944 bytes bin/Debug/net9.0/myownhttp.exe | Bin 158208 -> 158208 bytes obj/Debug/net9.0/apphost.exe | Bin 158208 -> 158208 bytes obj/Debug/net9.0/myownhttp.AssemblyInfo.cs | 2 +- obj/Debug/net9.0/myownhttp.dll | Bin 18432 -> 18944 bytes obj/Debug/net9.0/ref/myownhttp.dll | Bin 8704 -> 8704 bytes obj/Debug/net9.0/refint/myownhttp.dll | Bin 8704 -> 8704 bytes 8 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Program.cs b/Program.cs index e9684c1..dfb3824 100644 --- a/Program.cs +++ b/Program.cs @@ -15,7 +15,8 @@ namespace myownhttp { undefined = -1, GET = 0, - POST = 1 // add more in future + POST = 1, + HEAD = 2,// add more in future } public class HTTPReq { @@ -40,6 +41,7 @@ namespace myownhttp var splitfirst = split[0].Split(" "); if (splitfirst[0] == "GET") Method = HTTPMeth.GET; else if (splitfirst[0] == "POST") Method = HTTPMeth.POST; + else if (splitfirst[0] == "HEAD") Method = HTTPMeth.HEAD; Path = splitfirst[1]; // check if the path HTTPVersion = splitfirst[2]; @@ -95,7 +97,10 @@ namespace myownhttp public HTTPRes SetBytes(string str) { contentBytes = Encoding.UTF8.GetBytes(str); return this; } public string ContentType = GetMimeType("txt"); + public bool isHead = false; string Status = GetStatusFromNum(200); + + DateTime creationDate = DateTime.Now; public string GetStatus() { return Status; } public HTTPRes SetStatus(int num) { SetStatus(GetStatusFromNum(num)); return this; } @@ -104,8 +109,15 @@ namespace myownhttp public byte[] Build() { - return Encoding.UTF8.GetBytes( - $"HTTP/1.0 {Status}\r\n" + + return isHead ? + Encoding.UTF8.GetBytes( + $"HTTP/1.1 {Status}\r\n" + + $"Date: {creationDate.ToUniversalTime()}\r\n"+ + $"Content-Length: {contentBytes.Length}\r\n" + + $"Content-Type: {ContentType}\r\n" + ) : + Encoding.UTF8.GetBytes( + $"HTTP/1.1 {Status}\r\n" + $"Content-Type: {ContentType}\n" + $"Content-Length: {contentBytes.Length}" + $"\n" + @@ -272,6 +284,7 @@ namespace myownhttp if (req.valid) { HTTPRes res = new HTTPRes(); + res.isHead = req.Method == HTTPMeth.HEAD; int nextAct = 0; Action next = () => { }; next = () => diff --git a/bin/Debug/net9.0/myownhttp.dll b/bin/Debug/net9.0/myownhttp.dll index 1697a44dd1dbeb91a5536ad53fd3d8a490659d4e..6ca3fa37ba9dabc04ff13baad0cec4bfac9708ef 100644 GIT binary patch delta 7962 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 aP)NH@YB;j8Z9nI4Oh4k8`5Ei2GXD>Slp_29 delta 7585 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�Rc+nPNp8O{}nb<$kfobDwVdY2edxuRJ0iw_cD(5IgD|@J-17 z=J-gyE!v%@beDgXgQCvLHQpBYD4&5z_5_VVaokl1Ecf_~8}(pr)T3XohjCIY@>Cjw zpeGxHDf%y5B?oDrHODxjO+Nu%fN5sATQqu>7;ceXzZKRB;|rRnt~2(DFZBqXbtH@* z&^GI4;|sCdxEtE*QHsA1SIAw)dOB(K;r_iw{S=ijhkgyrr=!4;^tw@k+rh6K6_mQ1 zs#P^A-rvk>@{{4H#)YdCIG!TF2=xGKky7|p)DLW>JAezc{1RX@CD2?eb!fbrK6k9u zk`B6s4mvuJp5AtJ0uN%_u_clh@F7h)o2KI7%y%CwraW!_?n|b)BPGB z(Re`PyBZD2jgHsYs*d4pH908Xm-WWCj4O;MjlG6M=ERRd&u6CH zSsqILj|dt4hS|pnHTxNdl7Liy_St8QN76lC_J%e&*RBNF|9ra_wF!P(VT+}oe=!26 z1Na~4T<2VLd%m;hYdWs`8oPXZam9B_o1HE646<3NOyK)txi=d3y%d zY`NpqTA$t7_-C=fUOXcJ?4D5$yluvO;2Se8^z|6N0^e9)mm?&_*a9`mcb#25bF?$) z98r{4lxHuVxyPyU1r?1WJ1}d@$_?6Fn#$MrnG-H}xtvbJx7xQ^nj!Kf9U&pmnp1fD z@DBt5on+?m6L9AE`nD7~@?5^P($|?+yQnE*FKQ}m^dOL- z$PDER<6CAymgyesCMU-#d}W}UM}Y3zCZM+;Z7L~-Ro`u6^PriJ??QZ+;ky#wE_{>r ziKZ3fy7CZx-f%A}WC)HDQf_9|?0w;`j+$xHyKB0q)lRAH?3&&-rJ-wDdsj_OeSKR^ zXLon^v}qj;wbR=h?HO}!s99b$u#?21B`DhZf5O%Hb8t2Oofvv}qx$i!!1oF0o|tXF zKc_VRjaTz8o$%avNq5Spr%nf pum+!ceA@8tge`xj;nM+|T3EMJh|L?GJ&$TDR}0+L2R gXbyylKsp7e76eU!Fd3-E7^pgl!E$?eI@3xf0Qxf$u>b%7 diff --git a/obj/Debug/net9.0/apphost.exe b/obj/Debug/net9.0/apphost.exe index a0fe5bf33899162208a81c6ef46239899481df20..a21a6d7585742cf63efa043b32a582dd87a142bb 100644 GIT binary patch delta 99 zcmZp;!r1^sEsR^3IMV$M8H^dyfY_A5h{2q}0LV50vJHTw34;X?8!=b{c}YN)F+(Cl i3Xn7at4?J|1*$b*NCwJVG8lr@B{P_94^L-W$piqbgb`8z delta 99 zcmZp;!r1^sEsR^3IMV%78Il={7)%+=7}9`r8jxkoU;xA^45>h|L?GJ&$TDR}0+L2R gXbyylKsp7e76eU!Fd3-E7^pgl!E$?eI@3xf0Qxf$u>b%7 diff --git a/obj/Debug/net9.0/myownhttp.AssemblyInfo.cs b/obj/Debug/net9.0/myownhttp.AssemblyInfo.cs index d2349a4..a891cae 100644 --- a/obj/Debug/net9.0/myownhttp.AssemblyInfo.cs +++ b/obj/Debug/net9.0/myownhttp.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("myownhttp")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ec256f2f5303de6a08e5be2277a2dfff55c836b9")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+13f35270f4504484290b43ad3035eef0c99129c6")] [assembly: System.Reflection.AssemblyProductAttribute("myownhttp")] [assembly: System.Reflection.AssemblyTitleAttribute("myownhttp")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net9.0/myownhttp.dll b/obj/Debug/net9.0/myownhttp.dll index 1697a44dd1dbeb91a5536ad53fd3d8a490659d4e..6ca3fa37ba9dabc04ff13baad0cec4bfac9708ef 100644 GIT binary patch delta 7962 zcmb_hdvH`$n*YwZ_nzB*J89D0q!Yp`50W(Lkat1?1QHVgQAQMSKt%~5U=V5OW)*2V z-H1|)3Yxtz!=fyLGwKZM11KFCX9gq6>grPHywu%6Sag&rpG>(sRE=SO=X59O_?VhM z_Ez=pey{U=-+6uK(cicpD zwG=ER`jOFF;LAu5Wq^NX3DE+(fS22gS*dkuIz;*Swb=KvAiKGW7%CWY^S6HjJn22qC< zsDzh59f0UG1*ahEgHZcJQz7!1Jen!9z%Y2w-%yLPlNtLAkCE($+vA?%x^(Fh#tiEa zG4gyPi2D`e8DSr^MitD*lw>2JTkyt$kTfWw%kbL<>UH}AtGMBi9A}6u@*;ETYmyoM zb+W_fq^>Qg3x76f$fGX1#WkLNX)krB^zbxPoM= zf#-xVRu2zgD+Ob6V0ie)48gIZL~MlQ{V_QwJpWbMWtfSWn!do5NH``_=Yf$R2`(|2 z2Cc^%jyycFMD29nkO`3%-i92L%iHq1g0qFWCxaZ}?U3gBLs!93CXdP{PHg>NNW<4) zEJAakaOMn?*zaXdh)YXNm)Qo@dMZgJLuDmogi!KjUcM@gW~qK+Qzi=%GS+zy%5k!g z7K7*)lhC!RVjp91$nlWl5Z)!{51y0rXNmAb5QMJ55V*|p3=!T3R#iZ3FzF>w4OP#z9l%Vl z7OBBoC|O`W$iM;4_zwGpkjq1(=Q`P19xk$MmYd;c?M+$v^V1@JhlB4! z9&A*VNc(#NF0wz%nh=+}COO4uPGuMP$QX`fOfwGiXlXPs z&AMtcu+CER%cIg!xtB+!t)_>rM{9pSt|~cLWma;<$FaUfBrS)g?lB&@0k$!D9~jso zyyr%U^4oA}h%AvxoaTC&uZk14Aqu0a$5Ix;-3LyaB2CEH5vLG)hJ3zXsF(E`2 znmYKx$K(R~tz0Ee`#x`JJOg1SdBg8PqNxK~t)5_0*f69-s>7Ke!{Y%VtaTBtAJWW_ znkxr1f#pN7DZHq{y~h`bqv8w?I2e31>dQyiPN*c;@QI6J>^C=kM$esf26=vIU( z&h+I#YMNVmIlf^jD(qH6_41dpH#`bmeN+YO1IX-6C*=u@m+ zL9_Jd4M9tczX(Au=n^+5+@;W~2=xV3LKZ5qs zY4fBbk5)n==zVJ9UKFhlo#SYnYV{RKcm1k=USJ`e<4a)qw9)1gwAv*DzwDHqxkH6# zA{Vq*%jG51Vm)F({jkbtoyfIEk1Ei5#4LNps8R6|xW6nWjz4%grt=z;s2P8=Cb<)s zkY?Q1+)8&8GuTW%^3z?g{6txfq+F%D0hSX`kMb0^N^yP~qqvK(oB+FVifdQ8QIxN^ z%D7_l@W;6f|3h%iXf}bgf-I`%k{d@Qw1s8SMy#4<*ag#c#lyH#svr%Pa)mY1M5<1+ z3{q_xH;EdQ<>iDb*G!evq}ao%VKr`U(#`kary0$rQ32U}5(yFH=e6q+5&ki-P+^I} zuh_?$pzZu~AQPp)lL{@Dq@RI}pkF%w46L;NS7TJ-yaYO~K^vz|G-I^RDh2M*G+mlX zBk71?Ihy)#`U0*kjJ|S6ZP<|m+A>E2cQ{JWcCuBbH_)4`M)zZ)OyFG#8YpBGB5mwq80Lzq+eIwHA!;$L->W=}|R%e6wy zL3>Liw-xaOIq8WK%s-J$pBaaAC%r$Y%)+UWF;VJHkPPUej}^C-MmnFwz0^3Udt1+@`;$77x*YmVnl6t5IA#(5 zgi?;7wP2IsKh($5A;l$ig>-ySmqo>NCQVmDH8{$W?LO5f(ptqO+Xd;lK^?;yJCo$- zS(LI$YQ%Ac_`SJLIKI*=sa>+EnW?0CirYf@bP~EvDeiu7HS|P^Yhfq#ddkCbirH3P z8mUBa$@y)hO2uuV$!OO|HEEVpX}aR#Nz>I z#APXN3w1JS`9_NSk>cc+oLZdVjP~QqPCg796<0=j9krFw{Z7n3qov9yiSnxzqp3<# zi;B6di^Qr*{YKIo*e^WEyt7w6tKu=?i5ky?uu^4%6>aW0k-i zKJk64%>vbfZ?-)MIj4;(>2GSwRC38N(9pg3K)yqw|8L1a5>7hcV7Rc$(lZKZ;fOjA zcVyw5Isj}^*sAafh1V!ttgr*fs2eC~osw(=W~0hU$v*=}(|(1L&c^{RkE}bDb|k%Q zU53N?u=6V5F}?tDS=6f8Rx7>&uUwG;7F%}%KQOidA2)U=+Qv~VOLHsRX*@<(Fwzdw zV)nT90(G+k<||ZAk85854_cF`j{b`~ST`$ldDt{1pQhy9>|IgG+LfeTNv?urCtD!x z1u5y(^61VF4Pv{h1h7V5yx&MHcl@43#wAM;py$bdL)tG&beL?I+waU(d(OlKMJYFDAQDXx09Ne%`2C+G4!yWKTK zI}dsWa13sD=jp$#tFzU3aTMnv{%Za$URm@ma3sA4%%%6W0$deN8>MsuT_!4U z`nin?-28HYqp1N{L^FUviUDise&AI4A+QbqL8+iCm3%(1g`)7;Mx6?8r3|rDNjm91 zdfVuvEpht9SWa8OB$NV`45p7L`cW8tVjPF|6XTphjY+zQNqL*1I~8sQerRk_^rH%o zD?F!AT-b=ed?*_e}@4|a8oyIwF zs|lCe|NXI zd{^R)!>gWRciX2X|0#E!=1puLGbV#rwl}ej`N*3%>df}8v)^hgVe9ORjkAH5HO;KO zP4nh@$9TJqe9p$?ifr$l%sW9hx!Y}+n%n6%@V_Lt8v>^z*UTF09_!}z&zlbU^?dSl z=@#>Ji7ZBA$Kgu?1a^4J=4%lfF1aqei7!pK#mixun)gO;j2rpLWV4aan73Ou(b^>4 zEg!#`;Z58#)^Iz#OSyNsd#vH<;NFGG{vP|vskN-zj!zA8o!gI39owu4PnQeX4y3OM zZveju7G$aTVE@5PbqI9J2+$Y`IS5}(EkO6jPa7q=WtN-m=4scB>vkho_mE4GuQ8b! zq_WMSX-5OqwJU1tYbIB%sH?B4t81*QX{uUQSKG0?wyL(it7}D7XH!#kO;cxs{ZGvs zYku+l%pVY&I}Zy%ebv-&!ncYRFsVmw1|NQ<_|1cEUW+|_dSO<7-UCnG$CtMMe8%x7 zBe!4ZwbxFcQIitx+?W!=w}0-vSA99^wPW?!*6&{4hxP-{QAy|b7WnzWn~q$Zp3Ur* z8Hp)il>!=aG8e9{qXc?$lth437DrMb;6}JL(C-hCY aP)NH@YB;j8Z9nI4Oh4k8`5Ei2GXD>Slp_29 delta 7585 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�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