From c2d982454385c7f4eb4182191d853e8ba50cc711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D0=BD=D0=B0?= Date: Sun, 5 Apr 2026 01:32:12 +0400 Subject: [PATCH 1/2] add response time and student info middleware --- TaskHub/Api/Api.csproj | 4 +-- .../Middleware/ResponseTimeMiddleware.cs.cs | 28 +++++++++++++++++++ .../Api/Middleware/StudentInfoMiddleware.cs | 24 ++++++++++++++++ TaskHub/Api/StartUp.cs | 4 +++ TaskHub/Dal/Dal.csproj | 6 ++-- .../DatabaseLibrary/DatabaseLibrary.csproj | 6 ++-- .../Libs/LoggingLibrary/LoggingLibrary.csproj | 6 ++-- TaskHub/Logic/Logic.csproj | 4 +-- 8 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 TaskHub/Api/Middleware/ResponseTimeMiddleware.cs.cs create mode 100644 TaskHub/Api/Middleware/StudentInfoMiddleware.cs diff --git a/TaskHub/Api/Api.csproj b/TaskHub/Api/Api.csproj index a6946fa..7405f43 100644 --- a/TaskHub/Api/Api.csproj +++ b/TaskHub/Api/Api.csproj @@ -1,7 +1,7 @@ - net10.0 + net8.0 enable enable @@ -12,7 +12,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/TaskHub/Api/Middleware/ResponseTimeMiddleware.cs.cs b/TaskHub/Api/Middleware/ResponseTimeMiddleware.cs.cs new file mode 100644 index 0000000..1f1b9d1 --- /dev/null +++ b/TaskHub/Api/Middleware/ResponseTimeMiddleware.cs.cs @@ -0,0 +1,28 @@ +using System.Diagnostics; + +namespace Api.Middleware +{ + public class ResponseTimeMiddleware + { + private readonly RequestDelegate _next; + + public ResponseTimeMiddleware(RequestDelegate next) + { + _next = next; + } + + public async Task InvokeAsync(HttpContext context) + { + var stopwatch = Stopwatch.StartNew(); + + context.Response.OnStarting(() => + { + stopwatch.Stop(); + context.Response.Headers["X-Response-Time-Ms"] = stopwatch.ElapsedMilliseconds.ToString(); + return Task.CompletedTask; + }); + + await _next(context); + } + } +} diff --git a/TaskHub/Api/Middleware/StudentInfoMiddleware.cs b/TaskHub/Api/Middleware/StudentInfoMiddleware.cs new file mode 100644 index 0000000..23db0ab --- /dev/null +++ b/TaskHub/Api/Middleware/StudentInfoMiddleware.cs @@ -0,0 +1,24 @@ +namespace Api.Middleware +{ + public class StudentInfoMiddleware + { + private readonly RequestDelegate _next; + + public StudentInfoMiddleware(RequestDelegate next) + { + _next = next; + } + + public async Task InvokeAsync(HttpContext context) + { + context.Response.OnStarting(() => + { + context.Response.Headers["X-Student-Name"] = "Tumashova Marina"; + context.Response.Headers["X-Student-Group"] = "RI-240912"; + return Task.CompletedTask; + }); + + await _next(context); + } + } +} diff --git a/TaskHub/Api/StartUp.cs b/TaskHub/Api/StartUp.cs index 9220ca4..1d6c0a2 100644 --- a/TaskHub/Api/StartUp.cs +++ b/TaskHub/Api/StartUp.cs @@ -1,3 +1,4 @@ +using Api.Middleware; using Api.UseCases.Users; using Api.UseCases.Users.Interfaces; using Dal; @@ -81,6 +82,9 @@ public void Configure(IApplicationBuilder app) app.UseRouting(); + app.UseMiddleware(); + app.UseMiddleware(); + app.UseEndpoints(endpoints => { endpoints.MapControllers(); diff --git a/TaskHub/Dal/Dal.csproj b/TaskHub/Dal/Dal.csproj index edb5ba8..1c690cf 100644 --- a/TaskHub/Dal/Dal.csproj +++ b/TaskHub/Dal/Dal.csproj @@ -1,14 +1,14 @@  - net10.0 + net8.0 enable enable - - + + diff --git a/TaskHub/Libs/DatabaseLibrary/DatabaseLibrary.csproj b/TaskHub/Libs/DatabaseLibrary/DatabaseLibrary.csproj index 0c323c8..012f0c1 100644 --- a/TaskHub/Libs/DatabaseLibrary/DatabaseLibrary.csproj +++ b/TaskHub/Libs/DatabaseLibrary/DatabaseLibrary.csproj @@ -1,14 +1,14 @@  - net10.0 + net8.0 enable enable - - + + diff --git a/TaskHub/Libs/LoggingLibrary/LoggingLibrary.csproj b/TaskHub/Libs/LoggingLibrary/LoggingLibrary.csproj index bf06657..ff7786d 100644 --- a/TaskHub/Libs/LoggingLibrary/LoggingLibrary.csproj +++ b/TaskHub/Libs/LoggingLibrary/LoggingLibrary.csproj @@ -1,15 +1,15 @@  - net10.0 + net8.0 enable enable - + - + diff --git a/TaskHub/Logic/Logic.csproj b/TaskHub/Logic/Logic.csproj index a38dfe4..2be5253 100644 --- a/TaskHub/Logic/Logic.csproj +++ b/TaskHub/Logic/Logic.csproj @@ -5,11 +5,11 @@ - + - net10.0 + net8.0 enable enable From 9c5dcc1907dfc5b257163c662c8a0a93e87434fa Mon Sep 17 00:00:00 2001 From: Meowmeow-me8ow Date: Sun, 5 Apr 2026 14:06:20 +0400 Subject: [PATCH 2/2] homework-1 --- 1.1.png | Bin 0 -> 7785 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 1.1.png diff --git a/1.1.png b/1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf3dd105e7deced6c12367332da517647f45d2f GIT binary patch literal 7785 zcmb7pWmMGBxAq_s0uo9{r{oZl(n@zK4vYv$gVHsm(%s!1(nCl%Ln92`B_Pev3`5t8 z|4;9|>)sFd!|(j|KI^Qr_Niy@{p>I;4aKK;RCoXY;Hk2boDKkhA@d-I;$lCv@nx%5 z4?hfN9Yq;H)i4e6L3wQXR{bpiP#c4PV}kXdKXFjfcLo3myZ(I`zwJxS007!MWx2QS zJU;DbX<8Z0B>f&4%&)t8g&)yg+Aqid-J?jJDL~c+2SQ$lTif11LCBf)S!TbHk5v}0 zCyqi-CNJo(Jh=7oL@=J0$!~@f9t%^F)?#cfeXEx##2o5BC_6{^7+zQj3v4a>9Kx3m zZ?A6?UcwG>vMZObotK->7rhQ18t0|u+w=Rok$VyVKrprK{2l|4Tlf7>&?u{2VnjNpc9H+Qk<4Y3&0Iiu+x*yr7_p)D1X=f`8|uSzy^6kVIyh8nlij=k84#{zT8>MUm>V#B zVBh*cczj6|`stFy=fae;pB|8Fb8=tW?=8Q)Tj_pPqr}{z`;~=|*S9AwNKL1}iF+jXRq=XKOqQj2 z%AbXSw~5mseiw}U%b^3g231~ymDau&YZR&|9Kee}s&Iz{sn;ixS7+so=D==VDZO&* z`xT0*ajzY42*~lvxTVof5CY~7S4@F>NBIs%iP*wu@|kVoq9$q&X;$y)M-BBjjc$)I z!0*3^`V0*F>`Xc~4ugVs>38kda*)=|_X2BZ^}EA5-aFNEDx&Sh4}R)K+0S}(jfQ~` zq@S95&kry2`HHTTVttdj})=%$}Lin+Yz44`tN z-89vA`e%9Qm2;pC?UO2&K;Gstl;3B{vV3%29%o3(CtX!dVsrN2L!O*l1H5vza_4<( zbB;Oz^#K$h>-5Nc;Ci;5d2)Z6;-@R%jM2t@jIW9H1+fr&ziK)Uk$H1Pw?Vmlj1$== z5rB{QG^BUrmx8@D=9a>Rz|Z0AO-BBE%PuKua)d>4j=nNVoITj=0^B+AC5YrUh%Ep1 z;7PJJaD?xVh8cHK9jhJf&PT($qMj=?1lO{@!pII78f5R3wEl0gl5ij-ZW#9U>2*MkXTZ%=%=XdN&ut(V zmcH|giu@7{nCh0%lamNk{P(0e&D917%Hk{qS<7{2p;tji7o0#uv0L3dfXMF}w2YYm zhqNt1Ax5}c0m=gA%KLE0stOPXsZX{XkWq{vjhO5aL5?}xyS#35+c(7Ccc9U-J!>F zkXQD8ia8P=^Q!O98V<1l-(a$3Or$R_rit!p@rVI6B^dwQ=ZpelAI*~;BlZp>S5TIgr7+L;~)bY=CAJ;^`asH@*@Md{}zOiT#+ zcrE&!w>Q)YGS6g#j%bbRYfw39Ec2jzYmRed!VOx*xCmmGzP;k*bRfw6wSN0Ab(hX; zL5bkiV0p-W&pp*+r25EMNAi85|0x0}+1HG8FwRP@ui3xBjA^b_Q;VlNwJj9M+`vvT z*=00LufHpb?YMwT^}gW3O*0hXoJMgr#J3TJD&%c zLio3HrcdbBR7wJ!9ByW(5iiq4b*n6Z)i{-dOz~dk(e{o-S$TCcGTEJnT0FqtU-ReW zs@`}SGW1*C(7dMKy}3c}Y*TV%m#9&?^k*l_77wm%6(En&sJ-bWml(lHb*pI>BwW_h z>lPJ%`VoPcc3kWSda+@VmK=GuG|M%p3aw#QI6^QMqM=7< z>bjFPdaPDSh}JpKOeO&bE|rGjgS?VT6}S9Vy<%0-4z}?Y%n5BmuM}*Z)G9*43T!NR zGh>}onruK=Q|Oxx<)R6ks`C|R)_aXlr(_kw}Pxn)e>Jg%%Y{{XSdOMkl_1}1VAguiH%8ChTCz0}?mv6U z9;rtHzvHL{iCRTyz&xE-0&!mfkCKq(8%Ure9pTx@a7a*MVav1*>L!YZDkr%#VM5{sY1){=p! z@R#`o?SGE$J-^IBu+Ub15fBf72`RofT~7;{Axg`JTNqG$Xhx}xPh#l~g1JA@}wHp%+JqxxQ`&u#GCcDAA`erbXW(jafpQS#N+rCC-n85tEIH-3Fm zV~+yCM0{{@C$L!egkX-7lIN>T5ff;pPwCnwp5?Cak5 zy@;z=MfC`WJCF05V~1L8jZVFc0cUr<&k=l7POj*85tbHBGq|#V9K{Or;SA^#XNtUd zwv&%ig|U^>D1xd;_x$E4Pf2SyLFekCklt&xXq}&4sqr82U=klbr%kAi|KOH=6=8Yc zfR$OOucrnBzcJo9E^N&#;9*Af$!eNCR%+oJGaLrY*l148HRYu!zH+2QLe}$eA)D2Yz1_i!nqJFP2}VChyx_ZoySmzN-Uhmlk>iRSuywX-Z3y0RBoe=ebM}JJ`#CHATkK2ZreF#;0 ztLF^QZa(a9C4zmklLutuZkm0&8g@yD)4!59VMZ`p^a;mraO>1IGpZIPdATTV9$^iE zTOQTY?ZBHfh|FncPk7H^cjYw6w#9D_;wAb!4GlAgt_6Ij;+LTA4&G|fAGm^_QObC_ z{uyPGb9Cd7P?&B+NV+)FqgARY_2p>2kv>oJD;-JaK#o}UB@4Tg=~9L;t;Hl`cIi32 zl6+#&L9m!;GQyt6adRl{ic$8-S?4xc9(og6A(z5`A@!E7>G0=u_fW|1-18aMJIXa-2Jk;ic@j&&#Ok4Rw>{jF9%$v2 z6yIy+_ksH5c^Q*C;hP`?dsJ@c;|+sWM>EVIo0bmGQ0@^kUmLzpa7Z+vM2j5T;T569 zUGdPhi@ZHYkBpIiK%Ek+@&zxWa0b@f>Ztp=~N&F2O;urmarVvMf>yv|)8dSq!n z2me7E8uazYavWK|meR;+2S>QfT9(V5L$vYYTh)p;+5WVw{^-p{kR zP z-DXJpJAWkFh7|Z>K=>oE_1m@6(JFG@l%^K|W283+a)pKA(aQ8O} zeeF6d&Fs*6QN}blOr)PX4wO{b|F?JRLr?l~daIJ%_`m+0*}x({a;l`bECT3Row@OI={ja#glLAbbdW!~yXia4R&YOwq<~AFZ_$@{2TXOZzh zIIVz6g`W0qU7|=;1!z6zGcAr?G}wecZb`?tq$7yi9Liy&Y88E@k*FoRfE7%mH4=uW zf0gAWAo1te#y?Tro4DsJQZD{XkBr?hBL0D;@jn*ezl824)ff12f2k}~S$;_8>xT1U zB8L`%IfL=J7|G-qqb#|&INy`m#i_#`1>RZBJED`VSz}kM8MPb!A^H!r*SBkHn=0h3=@5_N?xFrwtX@(@ zLr3#T)1zSJC$33(YQd{cr7YDnKk|ozDjffJrn}b~B!-Id_4wFEGio5oR(_z5`q8prL`Flj@)1`+SW1*E*1X6ot#%l z^H?v|T~MhkNB2D;UC&Eiyck%;@rxiSwUOYcM*x>cMy3xL*IahqD*#~6_&*-?|8uT5 z;SMFwKO(U|x#I%ZAB8)x@pW$th-Y|E#(g~=&))l8zv`Mbw=0%{ITz1(0S>tP&h!Vl z&9sMHlGcF-D0}~SK0>|e?+w+3gMruPk`_nvaaf0UL&nXUXJQS-nyuq?Jx7KIX#jMe z5}C>NNCG5^dtq@J2W{T%3bZv)jiG`3DSM0{Tr3)tj@#ZtdCC1 ztT($yK?jET(;E_#wWaw3(eV;&7<^(CP0{GRPXS=lIeVIGkz%%Dt51d;`jD&D%Vx*R zdf0WwfJi8PoquA_27sVli7cu27ZH?LGsp}G-wrd>U4IIE5jl!(b#KnNuAuYZMO+`tZ0XlQwgs7=jT2+ zfG$(&OFT5*D!WL5f(kD>Hx>v2mO-)+}}WydDwnRY^^X z?9D;XTwe<8iT5I+lk90^mV+mrC7EX>d*6+2^2ye}kWwImY`-tUUQ5B5Q{wkgY!5>y zRO{jk{JJ?_soZMjgqbL=gq84`aegj0^(+usg`N=dC;n7mju$l&C6~t6?i8LWn>nsi zhm$=2l-YkmI1RBVefmc7%oj~*4ZQPzsTTA(I5Ue)G2R+9N`${pH9CO%R;JcZlkDi!WvnIzEzZ< zg+iPb_XV#auijG>mEZ~OelC570HptWn4oo<3f$eWT@OYV5Ys`Y#SC~uLke?8vV{&G z)(R#IJAEb}fyA3j3}Z>a#$XSZ(q)yU)R#6|cn4?TTISl*k+Rj#S zYJEzX_(w61lsRGeq!8qmMS5HP(L|^H2xWuuxvv963SA9`tV!K~u8O-*a_54P#5ntY zs*V`p92T)?Y*AzLQIjWQJ@4PYFS_rbz)M0vFu;+ z0mu}lOyKay`YMTO0-xfn7dmZBUZS6Qkm6FWJdc7T zByE-ZV$A06x4shnV87O~92&tk(napO0|3TCm5rX*C%Iq}gMKC$qHBgCV1B)F=anEb`Ct4RW7&c41HuTB)`HQB6?7yvSXXn)9u?jaJ0_4Trx;{tN? zp#JaKPs+WC@S}Gj<%o$OYN=b|6#1kEqh~&>zGFqsFl4Osugvjl2xMDO)rkKajL2FTbyn)(Y@p=@+2dP z&+&a>hxkfe8!Ez-)j0`0@Z*$Sm&H#z_S99cG=nZuJp@7@@ljM@#>@zP`|epb8Jky= zUoHVXO0#n6^!_B1Hd{OSoHg$4dOBr6WwM8C^~6;#ixJqxP%$mol*idn&^}El^dS6f zb|P$A+K$dBui(0|v`Mpb7tsb8`(-xDQ-rUl32|1CY9a%K{tApnnHDIjcZz%U$=JscncJrAo z{SC#7r_2qwBtERg|L8hFO#@Z|U;3x`=I0{!Hpz@0KOJmAUL%k2BO7>;uH-J?$pQqW zMiP98Jg#BP2HlrqP|AWvgmqQqCf5PP=`hu-smzug_QzwQH>cfP&fTNUFGF8?ofk2? zD7cZ%f;Ymn=vUu!o~?qClAWpl`ed4hP@~f8Pgv% z->_MqI1sP@OCujPf{=DPO3J`heK3Q_#eFa}o?YUBZ?R%~wV|T-NTkqrN}m6nV~!p@ zePKXF;lb}Q|H26ZWKRKp372Q=K2Op46+od!c#wqYN{y1=8;X3?T-@i`$NcemV-~-+ z6Fv_J{W2Ze%AKv`Zxu1dz(|NjA`^C_wT literal 0 HcmV?d00001