From 21f23389806754a5a9f0ceffef5c3f8b665396c3 Mon Sep 17 00:00:00 2001 From: Alex Karataiev Date: Tue, 30 Dec 2025 13:37:08 +0100 Subject: [PATCH] Implement ExchangeRateUpdater --- .../17.14.1431.25910/CodeChunks.db | Bin 0 -> 106496 bytes .../17.14.1431.25910/SemanticSymbols.db | Bin 0 -> 57344 bytes .../DesignTimeBuild/.dtbcache.v2 | Bin 0 -> 94260 bytes ...36282d28-6132-48c3-8512-f85835b2f394.vsidx | Bin 0 -> 2597 bytes ...888382d4-02f3-4671-b900-17d449760895.vsidx | Bin 0 -> 11091 bytes ...9ea21c94-818e-481e-bff6-638adfc1731e.vsidx | Bin 0 -> 2826 bytes ...f35f0a0d-cd21-458e-9332-f515123e0f4e.vsidx | Bin 0 -> 21506 bytes ...fb18cc91-a2c1-46b8-87e7-3b55c50aab66.vsidx | Bin 0 -> 107 bytes .../.vs/ExchangeRateUpdater/v17/.futdcache.v2 | Bin 0 -> 248 bytes .../v17/DocumentLayout.backup.json | 55 +++++ .../v17/DocumentLayout.json | 55 +++++ .../exchangerateupdater.metadata.v9.bin | Bin 0 -> 1361 bytes .../exchangerateupdater.projects.v9.bin | Bin 0 -> 50279 bytes .../exchangerateupdater.strings.v9.bin | Bin 0 -> 125008 bytes ExchangeRateUpdater/Demo/Demo.csproj | 19 ++ ExchangeRateUpdater/Demo/Program.cs | 74 ++++++ ExchangeRateUpdater/ExchangeRateUpdater.sln | 31 +++ .../ExchangeRateUpdater/Currency.cs | 20 ++ .../ExchangeRateUpdater/ExchangeRate.cs | 23 ++ .../ExchangeRateProvider.cs | 213 ++++++++++++++++++ .../ExchangeRateUpdater.csproj | 13 ++ 21 files changed, 503 insertions(+) create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/CopilotIndices/17.14.1431.25910/CodeChunks.db create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/CopilotIndices/17.14.1431.25910/SemanticSymbols.db create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/DesignTimeBuild/.dtbcache.v2 create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/36282d28-6132-48c3-8512-f85835b2f394.vsidx create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/888382d4-02f3-4671-b900-17d449760895.vsidx create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/9ea21c94-818e-481e-bff6-638adfc1731e.vsidx create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/f35f0a0d-cd21-458e-9332-f515123e0f4e.vsidx create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/fb18cc91-a2c1-46b8-87e7-3b55c50aab66.vsidx create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/.futdcache.v2 create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.backup.json create mode 100644 ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.json create mode 100644 ExchangeRateUpdater/.vs/ProjectEvaluation/exchangerateupdater.metadata.v9.bin create mode 100644 ExchangeRateUpdater/.vs/ProjectEvaluation/exchangerateupdater.projects.v9.bin create mode 100644 ExchangeRateUpdater/.vs/ProjectEvaluation/exchangerateupdater.strings.v9.bin create mode 100644 ExchangeRateUpdater/Demo/Demo.csproj create mode 100644 ExchangeRateUpdater/Demo/Program.cs create mode 100644 ExchangeRateUpdater/ExchangeRateUpdater.sln create mode 100644 ExchangeRateUpdater/ExchangeRateUpdater/Currency.cs create mode 100644 ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRate.cs create mode 100644 ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateProvider.cs create mode 100644 ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateUpdater.csproj diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/CopilotIndices/17.14.1431.25910/CodeChunks.db b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/CopilotIndices/17.14.1431.25910/CodeChunks.db new file mode 100644 index 0000000000000000000000000000000000000000..f8c0ead1558c951b5097f0434833bbfb0ec81750 GIT binary patch literal 106496 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 UgO>`NRNdgB;*%kp0`8#y2jmG{lK=n! literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/36282d28-6132-48c3-8512-f85835b2f394.vsidx b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/36282d28-6132-48c3-8512-f85835b2f394.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..adc83e51967d3d1903f3c4f1bd4c84705715cb02 GIT binary patch literal 2597 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 literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/9ea21c94-818e-481e-bff6-638adfc1731e.vsidx b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/9ea21c94-818e-481e-bff6-638adfc1731e.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..65fed7bab94b993980c2f709b9eec528a270cefd GIT binary patch literal 2826 zcma)-*LGV)6ow~>N$4T;P7uAxHq``MM3!ZtSj8MkNeqTy9FvehV(b8>_g+G8x2(mZ z@CMxFiVL2D@89#=%Zn?H&iTJNd-m+vduDuGn`-PjJEeclO>rH}NPSq_Ge3Ih)WYiV z`TE-8(S;L7mWqW_OM~UZ=*s`Kl^0i+S56)~z4!M&|6V(@<*zMyf^C7VDbYa50L?cZ z+!v)Zl+x~$W;gX_H}uj?U3lV;C&SNLcP8vew9y=vQQW-ZpDp<0Hp98ICvkSIhsu`h zj827Hj)QK5{Z9$?2utLR_!qAS#7OWwU5>zX%!1ODOCT&=6tXcKhdkFg(ZDmm;-9C^ z31cKf#$qIg{EG7+jClyX-1y_U*^OR2Nh}A?VK?&3`QSqX2gcH7_FQSUqf=*wQe3#j zMF7Q&hyEa;gK||Lg$B2qJ50q;KQ#w+KJ|W{dA@mpd7-(}B+u}t)*yQjyu{=L#rtLE z<>nRUmF89E)#f$kwdQr^_2v!cZu3U7WZq=nY~EttYTjnvZr)+uY2IbtZQf&+&0%xI z95wGX?=$Z=A21&@A2P?xhs{0aBj&g{VOGpX&An#ToHT1DhbY#cGZdUQ8|GtX)7)py zm@TtycFe9hYd&rkX3x|IPUnfgj^KXtfT<6m`sd6i%qPux^C|Ob^N{(BxnMqPE}DnU zCG$D+h9ub8izYvya_>*gEgo90{Q+vYpw zyXJf5`{oDchvrA-$L1&Ir{-to=jIpYm*!XI*XC*S8}nQ9JM(+<2lGesC-Z0X7xP#1 zH}j8eG`P0&l+q|)?^0@~W-8MvhmND8Sj&7L52CHqMLWEeQ;(15Fy8IZKHA{~4)ag0 zK>Mj0QAR=)dmO7+PGdazy&2X{=xk^oRZOYciaAcqYG{Ef@+GHp0>lEqGI3ojyg*9yKfj+68shuvVz4PV_0pmqI6aSLU*oP|c}n=~$>nA7EasY(HWZXhEFm@KpB7S|b|#n(=f{W!oTb1)Hjo z7HFGwYDNxHjp#yETMr$ieY8}0iLoND*K7h9y%MAf?T_d z>hc?4)5)ksUx6xLoxd(mm7KH(T2t*zUQ3Oy(AEsn?A?p@098KPt+~jrg=)uj)@PzG zXPh(0`;_;!!x;TdXm`tKHKNqXL94G`<OV literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/f35f0a0d-cd21-458e-9332-f515123e0f4e.vsidx b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/f35f0a0d-cd21-458e-9332-f515123e0f4e.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..c9e2171442a4b41ee60b8ba68b69f88c74f03a36 GIT binary patch literal 21506 zcmai*XJA&v)`dsK-aGbyQ4)!v*bN|QB#|_dH;_;as3?dP8wycCR1^#LE~wahuZX?( z-m&-I%T>R%_IX~f_t$4m)-z|$%$_}c&WTi3)vUf;O7FC$_^&NP8YWimIJ#fwLE{db zG`f1qZWG4syXW|paR-fW+kbcIi>32t6aE4O7}IrCBK{+0c}hj+9EQOEH;NrnF@KR@oK*Z-WC; z>K1vWdZbH%?AjwG)meEngVJLoMo$&5t2#l~ni^XAFDP=)rN!LrMBBj++Iy*d+lWO)&Qo1F%bMH%O|FEf2{(Z@; zZddx>#!rFs1fz zRZTrRYN4{;PHBEhlfs}ZXjHrrjrLjI0rkRZ`Qp?#x2N<~N|&W{dL)o#jirV8TVZ@yL=oPN^lO+aj+LC{jhM7V0>;p%^`q^NLZWlvrhH z{3u>!sZcq;R_Nkzc$t(=jDSX?dP)|4i&jl}O$$$EMf}=fN6yQ)Tf^E35iifXN2JrCztAH*Q zJvUT-X5Q`-33Qv)v_78x85NXSrBU7GfQ;x?2GupsMl}m#8p@i?&Wcs!BJ2_)Km+RV$|R&;{1s33ZG>`@w()vj9e5g zpvF<>%9NmR2!;l*`)g{pKESP*M^;}`byuK&r*?Z9NCuz zsT`AK6{LXXyBt@cN_Do*L;OjZj86uDX4%1MRCMirFnpKE5Mmwh#O)+SkA zrPmsz(WqRCACl5N`IUTb7~DQqk8Ux+rK-ZYFh8#XUf#0Gm1QN) z7GX^X`LH;@gUE9|(xre(QKhsXD1pL?(X9g6B~Ru=q*gq+t?Bk?^!56YUWv7oO^6A& zatuFp_uLp%%C0_=s;TGaEo*?Ob}CoHPXkX&u^LC~l8V-XnYmOL>CcP`sxg&)K}zRD znxmp4PWR*3k+V{~bJDy1$x{ih?8Mtz~;M3M;!7>WZ-0J@zs^8XN&x(43O?2>%tSu}QLQ99S4W=OW{Rc)BS3RIV9un*|E@n6o3-+?boHzO1Qs&0#_9pm?QGq%PS}b_Gg6(OGsqBvR5 zCCiFY*DKsTE+ta}sfrsM3u)%65-1=C^mKltRL8v+{#=^USz$p5^i&Q!mD2SQBUe>K zVT`4}!h$T%i@@M0MTIJh!qa2m$wEntXKe(kX}5^iqwVw4PzhvT@yaO8!YV?Q)!0x< zjp`n;4$FTv(Y?{XN}MhAD*gL#K#pkystCpCSS76rYjdMhWJlQ*sWFq4xFFhD#T7(M z=AQad>x}B9Tswph*^;7uR9?9^I9ABnF+{V$FUu-gc9xG#P+|F?TgB_rU{+Wq>Y5Za z`Y8O71r1Kwl)>z&lId0jEsPURLBwm~>!}jY3_GfV{FfWL#^!6J@QkQzM`)IQ=}51{ zbHfb{Bn2wMnmm+2U2;!X)*vc+vy@b5b4q<9ezpG{b-LBn5*B1!rRZ8S>Yj!5G;>ew zAe*{XV=5ragY%uMlv$yfDvh2>EAwtB{YqQ+O7Wi_#ed4=vf@`I1T{W_s(Vl#1vM*z zTDpU_;k@!GsI4TpB2;;CuU-ynOa)hk@-6PQvjsIXgQ|FNEvV%_?$?3qLJiZ1Uk_?O ziTe$pMtIz7c?fO{H-QDP2kZ$qg@sUk7x_1bZbH|)2o}RFU~gCgw}hpz59|y3!TxY7 zsNo&uYy-E2+d<9pc&@n=+!2<+0dOE31b2diVL7aT8Zcq63Rc4*um;w`I;gER@@Z%W z>tO?IgiWv+4ucy1k*^izU>h6`N5FQdsTui3!clNE90PZOop3B12X}?L!QJ6_xCh)5 zPJk2PUT_lJ8}0-5h5Nz%;Q??mJP;lP4~B=pL*W#77}Vk#?JyNigI(|lcqE(-XTX{8 zC^!oq4Ud7x!rAaRcs!f~Pk<-Fliz6@W1 zufo^h>+lWuCVUIN4c~!_;k)oX_&)pqeh5E;AHz@Jr|>iQIs5{C3BQ70!*AfX@H_ZD z`~m(5e}X^5U*NCsH~2gJ1O5m83IBqBLoXJ((h_h%etkceoy0A8r6Qgd4$);U=&E_JBR%rmzrh1~-SjU=b{a zTfpA11a1jSVISBR_JjT5R&Z;$4cr!P2e*eiz#U;38~_KxL2xHH7?#5dSP83OH5>wK zU@feJJHw%{9yY*6*aVy5FxUcHVGg#z;cx_OhaGSv90fn{y3CF^5a96k++#QaG zd%!*61UM1y1t-D1;XZI*xF6gf9sno91K~mNV0Z{T6i$JM!NcKHI1P5eBjAy6I-CJ# z!lU3Ucr-i)9t&r~e41a;Y!r$QU@DKPO_$T}e{tf*}LBX^HToNt?yTPU5GH_YA99$l*09S-7 z!Ij}Ea8aAUX$EPy>=Pq-;8gqy+5VJ}z& zi{TcqH!Oi$!cy1=_J#dmf4CLg8g2u(h1)_6CD6EGKun{)FW;hJCz*d-pZE!do0o!2*90^Ck(Qpjh1$M%*a2(tf?gn>< zA^I2BHVUGNBaB%BUs zz?twUI13&PkAcU++3+}cJe&hhfG5I};K^_ z!n@$z@E*7j-U}DO`{4cX0r((%2tEuSfsew+;N$QK_#}J^J`JCN&%)>6^Y8`uB76zH z3}1n-!q?#I@D2DTd<(t}-+_zayYM~uKKuZF2tR@!!%yI+@H6;1`~rRnzk*-GZ{WA^ zJNP~P0saVof{HMlxl1Fi|zf@{Nd;JUCoTo0}fH-H<$jo`*`6IcLyz@BhZSO_-oCx=Vli=QPAGj~v5AF{SfRo{Y@E~|FJOmyJr@+JD;czOP2D{)9@JKiv z&VV!FQE(PK8Xg0Wg|p#t@OU@}o&ZmTC&829TzCpR6`lr9hiAYu;aTu(cn&-lo(Io| z7r+bQJUAa-1TTh{zyA-oqZg7?Au;REnN_z-*;J^~+wkHN>`6Yxp+6nq*!1D}P@!RO%%@J09% zd>Ot1Uxly1*WnxRP52gk8@>YiV1Kw3+!}5Jw}som?cok^M_2|2z=3cO+zAeb<*)))!YWt| zhrk+G3+v#{a44*Y4X_b5!DcuNw!l`HgKcm)90A*52OJ4U!O?IG+y!>Rv2YyR748Oi zhvVTMa8Eb^PK0~GNpNqt58M~-2ls~uz{&7Hcn~}o9s&=AQ{Z9na5xoCgI(|lcqE(- zXTX{8C^!oq4Ud7x!rAaRcs!f~Pk<-Fli zz6@W1ufo^h>+lWuCVUIN4c~!_;k)oX_&)pqeh5E;6E@Pva{afAetV=!{R<~+PFkgZ zS<)lbrABE>gj*HgQ$NM=n`vo;%cPY`X&osYlFFsEk-k;`TVK!A7Eec`EvYclTH8`D zX^FHrl}T-}SDGpd*2>V@&=%=5{T79f)~X2Cg|-K1L|JbCBIU8??u8=#+GZ}|hex^i#-OXaCG7dk@f-Y*W%i=)STr{22XQvaNxGPEVMU0R_M^H$tfcdtx+44M*EaT`&e5QQy)*=N)Fp*LzL@QDpiZM zNt?n>b3An`l`3bZ%@NK?-B#AxP+QAI`dsAAsgFw22tDod&(8>js+6mbY&C|qONYo4 zYm>B9rT0-Tr<^Lk`l_YMqzz)*&~K~MqicY?YM0i@{{f24g|_M6F-}!GS(`&!)N>x=*2?I`ky5wPPO7oT zZ-vrZo1~SBx7LQ%g$|Wg$v10xsOdhnI!#sNtx`Lbt7Y8M?$dHTvt_RyR>!-Kt$yl0 zwK`3G^lH88;c#1Mr?eqbHiZ2~&E0a@Dh{=s#_+#Ur8(@pjZsQt>QLBor#xzEb()qa zu|;cglQTflfaJ+lNnzeLugj+(LKC8FKjDKy(A!}8r^H!@L ztWKYes@h1EjjcMu4SMPkQmM9Xl6p*7>q6V4jq=!QlPx!eS4|on4%@dT)u~eTciwFM z^@`@O$GH2&YHRKVt83vlw>nLS=9ty%T!((G)1)Ic=d43jvQt|drOsomk$SdyPSl0A zhUTPB>v@u`rzH{2R>QIgyXWkgbx3G^XiKQ=c#d1Ag?33@2djN((i3YIZjSH>smFAc zTHK|352%XP@%*%h9TDSNJ8Vz7v=>-QWY2q)wK+7u=Qzf#=)J;PCe5$h*$VBaUYV+6 zrLhiDIKNJ0Gd`PD*(@2Mryhx}e|cy&7QC*zKeHaQI!%?zw7T>v^^|pBXmzOlbPasx zHN&IMZEDM2i>jkm)vCYm+HAGFl{@AWi)I5T(4k&~_d-&WQCANp<_DJ8Z+|~L=uWrfC z=-tc{lQ$wbq8#h1N?wTdi5RO<||A+tgxKTl4NyE6>WLK1o@drC#B!-tj!M ztxoCLVD(dvtXh?8t6qm|b?-FpX={_zW5_3dr|FWNI-MSSOWn@aMrox=x4H+sW?MaW z+yd4nsmrxGy+@*J?6B+MQ-xD{wpyLOUMpFh>f=+j&xh7*o;&POp6^Syn!|OW!$NJ} zbJlA6jcK^l>uQ}^$E7su$0se@@lIyV!cOD4W3>hEKGu>@r*T_Y?Wbpi)!zEVUZ?fl zo{Ws}$gnv^?Y6W0$ljTXwext@9UA9uYlXsIyN7B9)`dEy&j>@KRfoz-wZd*aYfkDK zcxN3VZB_f%#~AQw%)6{drgz-d&@9}cut$P*K&VrCm9;j8wuCyDOR=^~-Je#c%=e^6 zs@v7-^lk&|NU43Xx~%LhXiNFtb^khSe;Sm-_a03?(^y@W=YZAzWbah&9fzIQCjqPN zd+oB?j@KohHSMQYD3{?hF3D;SJ0gwO9FMJHsawoi6KbFQ7Gljw?U~gvK2ch;_;!VT zM)SC=3UwOq309}{IJY{z+c2xGOZGX~cix9Qo0~Ltyc;>*6xYq~;w92v zdg?dSo}q=IjZ&{)R-c9aPU91?bJ?!dXif4u5j+e5pg`4!hQ&+Dkw{(J4T_6aQu9Te(PynRbKJYQOLu$bcl2zH@ErF_;in!~R(t5tWwiyr z5m@b&Pk~n3%+?o=Du?Zr*95D5@XBDF7V6gUn6x^*d)=#&Eq6rvPCfOW>t z`C#=)$?7yd{aHJtZhx-={=VQH&uTBcUs;{2MzyedC3dS?y{~xp@EYc}^Sa`><Y2<~JDklGXc+`^0L`UB1;N z`g~?}yiZeB+xL0e>ZjfXtzHd1>#VMqEqd>CdXHnPOZ2{JwN0N`tgf}sEmqgUNXaUn){f9Fsox)cS}hN? zcSYf&&sRRVmPtz^#(nItM|XB|^*4s>&BW@S^p0b78o%}Woy<1hC!I5@B_@?kB6y#s13bH-TQt?Umo!FSLKCt$VCm%cTC2XRQpa3H4s> z9WlQSx(^)odB^*O$B@5B`Tf^#6wc*7&Ats-U1Rs7)n!#Hht(yzAFVFYdxSMRLAu0j z6?We_+$HrX+vn5lw3VF--O`?oJ^|S;pNXut=~Iu@>AeS9ZNY1vHNP@B?D+f~wO5{7 z)~v@|R=#G=oBy$IephloxsKU4IIkfNJ6EvUt@gxwlGSNO=?kIN zJvAzA6}ok(_pzR8J(uTQ-DeVOMX1lweuuI86rSx;o<$D3Z1=d;^V0opb*^Hyztt&y zV)uULdFk#W00=@z&8yq~=pX77aA_eh^^-4;G+d5q@U#df_r+C!fitRtnK z^=`HNmj;IiMT~v(n~$|2v@z6clV^+7p4dyPZTehc?F{Xb`n|_$e`}-eey4HR>%M1~ z)hWHwT3wb`0ISnvYhrfV%}#0_QQjGbhPtNNF7n@9$T9XR+e5rRc*QLVwI|KtiPwII zU83i()iuhmj`q{*kkuzs&swYPct%?Lgt|{XYO*6|&m8e@eCDdK_9?LUU5T zC0Tv0@+k7Y?r&uN%a65E>hbS)=DN^q752H+Z*=~e=GOEn#ck@R?hF4tAXA4%>ASxF z{?k|Lk)Qvr;qmWqz0_muzh63fD(v}cEeczE5;98Vjfp+1r_{Td|3*?K^_tVE zlG>zh5q}k`lX^Ajl;=%S@5uf_RIYu=Z{z+uVnb+7>Rrj-YpbPR0sQw8r*SU-)x?_R zb$z|Fc_#QTlheYE>)8~wZIe2szd#j-mPq}VOlzssE3Ny?G5#BoTc4G O?G3jeVvlXJi2nmnJR-sX literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/fb18cc91-a2c1-46b8-87e7-3b55c50aab66.vsidx b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/FileContentIndex/fb18cc91-a2c1-46b8-87e7-3b55c50aab66.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..70aef67a00f5a48bfb0d87044cf8f151e2685b5d GIT binary patch literal 107 wcmZ>EaTnxZU~p%E02V0C38Z0cW+XOHDO{Wlsuo0n)bd05(ok9*N*hCI0FV0t;Q#;t literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/.futdcache.v2 b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/.futdcache.v2 new file mode 100644 index 0000000000000000000000000000000000000000..68aedd34ecb6d7c2325e49699717f2f96570117e GIT binary patch literal 248 zcmZQ#U|{fZwu&)~FG(!Uj&ZF>&PdElPYp^eNewMX0g^?;is>a67Zl}ZF#!$ab1^e}J?e eeuucE=H|zM2okN*dexK%bQKtwDrHoGtO5XB^;gsY literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.backup.json b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.backup.json new file mode 100644 index 0000000000..5b0ada3261 --- /dev/null +++ b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.backup.json @@ -0,0 +1,55 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\1_task\\ExchangeRateUpdater\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{F718280A-7459-4E33-B42A-E19CB8ACE541}|ExchangeRateUpdater\\ExchangeRateUpdater.csproj|c:\\1_task\\exchangerateupdater\\exchangerateupdater\\exchangerateprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F718280A-7459-4E33-B42A-E19CB8ACE541}|ExchangeRateUpdater\\ExchangeRateUpdater.csproj|solutionrelative:exchangerateupdater\\exchangerateprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A3E62F0-B85E-4261-BBFD-354692E70DD6}|Demo\\Demo.csproj|c:\\1_task\\exchangerateupdater\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A3E62F0-B85E-4261-BBFD-354692E70DD6}|Demo\\Demo.csproj|solutionrelative:demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ExchangeRateProvider.cs", + "DocumentMoniker": "C:\\1_task\\ExchangeRateUpdater\\ExchangeRateUpdater\\ExchangeRateProvider.cs", + "RelativeDocumentMoniker": "ExchangeRateUpdater\\ExchangeRateProvider.cs", + "ToolTip": "C:\\1_task\\ExchangeRateUpdater\\ExchangeRateUpdater\\ExchangeRateProvider.cs", + "RelativeToolTip": "ExchangeRateUpdater\\ExchangeRateProvider.cs", + "ViewState": "AgIAALcAAAAAAAAAAAAIwNUAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-29T16:03:14.636Z", + "IsPinned": true, + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Program.cs", + "DocumentMoniker": "C:\\1_task\\ExchangeRateUpdater\\Demo\\Program.cs", + "RelativeDocumentMoniker": "Demo\\Program.cs", + "ToolTip": "C:\\1_task\\ExchangeRateUpdater\\Demo\\Program.cs", + "RelativeToolTip": "Demo\\Program.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-29T16:05:37.307Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.json b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.json new file mode 100644 index 0000000000..5b0ada3261 --- /dev/null +++ b/ExchangeRateUpdater/.vs/ExchangeRateUpdater/v17/DocumentLayout.json @@ -0,0 +1,55 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\1_task\\ExchangeRateUpdater\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{F718280A-7459-4E33-B42A-E19CB8ACE541}|ExchangeRateUpdater\\ExchangeRateUpdater.csproj|c:\\1_task\\exchangerateupdater\\exchangerateupdater\\exchangerateprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F718280A-7459-4E33-B42A-E19CB8ACE541}|ExchangeRateUpdater\\ExchangeRateUpdater.csproj|solutionrelative:exchangerateupdater\\exchangerateprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A3E62F0-B85E-4261-BBFD-354692E70DD6}|Demo\\Demo.csproj|c:\\1_task\\exchangerateupdater\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A3E62F0-B85E-4261-BBFD-354692E70DD6}|Demo\\Demo.csproj|solutionrelative:demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ExchangeRateProvider.cs", + "DocumentMoniker": "C:\\1_task\\ExchangeRateUpdater\\ExchangeRateUpdater\\ExchangeRateProvider.cs", + "RelativeDocumentMoniker": "ExchangeRateUpdater\\ExchangeRateProvider.cs", + "ToolTip": "C:\\1_task\\ExchangeRateUpdater\\ExchangeRateUpdater\\ExchangeRateProvider.cs", + "RelativeToolTip": "ExchangeRateUpdater\\ExchangeRateProvider.cs", + "ViewState": "AgIAALcAAAAAAAAAAAAIwNUAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-29T16:03:14.636Z", + "IsPinned": true, + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Program.cs", + "DocumentMoniker": "C:\\1_task\\ExchangeRateUpdater\\Demo\\Program.cs", + "RelativeDocumentMoniker": "Demo\\Program.cs", + "ToolTip": "C:\\1_task\\ExchangeRateUpdater\\Demo\\Program.cs", + "RelativeToolTip": "Demo\\Program.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-29T16:05:37.307Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/ExchangeRateUpdater/.vs/ProjectEvaluation/exchangerateupdater.metadata.v9.bin b/ExchangeRateUpdater/.vs/ProjectEvaluation/exchangerateupdater.metadata.v9.bin new file mode 100644 index 0000000000000000000000000000000000000000..bfb62d45c5204584d7091518273303650e6821da GIT binary patch literal 1361 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 literal 0 HcmV?d00001 diff --git a/ExchangeRateUpdater/Demo/Demo.csproj b/ExchangeRateUpdater/Demo/Demo.csproj new file mode 100644 index 0000000000..c151739636 --- /dev/null +++ b/ExchangeRateUpdater/Demo/Demo.csproj @@ -0,0 +1,19 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + + diff --git a/ExchangeRateUpdater/Demo/Program.cs b/ExchangeRateUpdater/Demo/Program.cs new file mode 100644 index 0000000000..1f471b2990 --- /dev/null +++ b/ExchangeRateUpdater/Demo/Program.cs @@ -0,0 +1,74 @@ +using System; +using System.Linq; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using ExchangeRateUpdater; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +internal static class Program +{ + private static async Task Main(string[] args) + { + using var cts = new CancellationTokenSource(); + Console.CancelKeyPress += (_, e) => + { + e.Cancel = true; + cts.Cancel(); + }; + + var services = new ServiceCollection(); + + services.AddLogging(b => + { + b.AddSimpleConsole(o => + { + o.SingleLine = true; + o.TimestampFormat = "HH:mm:ss "; + }); + b.SetMinimumLevel(LogLevel.Information); + }); + + services.AddHttpClient(c => + { + c.Timeout = TimeSpan.FromSeconds(10); + }); + + using var provider = services.BuildServiceProvider(); + + var rateProvider = provider.GetRequiredService(); + + var currencies = new[] + { + new Currency("CZK"), + new Currency("EUR"), + new Currency("USD"), + new Currency("GBP"), + }; + + try + { + var rates = await rateProvider + .GetCzkBasedRatesAsync(currencies, cts.Token) + .ConfigureAwait(false); + + foreach (var r in rates.OrderBy(r => r.TargetCurrency.Code)) + { + Console.WriteLine(r); + } + + return 0; + } + catch (OperationCanceledException) + { + Console.WriteLine("Cancelled."); + return 1; + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error: {ex.Message}"); + return 2; + } + } +} diff --git a/ExchangeRateUpdater/ExchangeRateUpdater.sln b/ExchangeRateUpdater/ExchangeRateUpdater.sln new file mode 100644 index 0000000000..26263d5ef6 --- /dev/null +++ b/ExchangeRateUpdater/ExchangeRateUpdater.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36705.20 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExchangeRateUpdater", "ExchangeRateUpdater\ExchangeRateUpdater.csproj", "{F718280A-7459-4E33-B42A-E19CB8ACE541}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo", "Demo\Demo.csproj", "{4A3E62F0-B85E-4261-BBFD-354692E70DD6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F718280A-7459-4E33-B42A-E19CB8ACE541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F718280A-7459-4E33-B42A-E19CB8ACE541}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F718280A-7459-4E33-B42A-E19CB8ACE541}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F718280A-7459-4E33-B42A-E19CB8ACE541}.Release|Any CPU.Build.0 = Release|Any CPU + {4A3E62F0-B85E-4261-BBFD-354692E70DD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A3E62F0-B85E-4261-BBFD-354692E70DD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A3E62F0-B85E-4261-BBFD-354692E70DD6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A3E62F0-B85E-4261-BBFD-354692E70DD6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7BB53F43-2197-4A44-BBD1-967E5B8C1B6F} + EndGlobalSection +EndGlobal diff --git a/ExchangeRateUpdater/ExchangeRateUpdater/Currency.cs b/ExchangeRateUpdater/ExchangeRateUpdater/Currency.cs new file mode 100644 index 0000000000..e3723cbda2 --- /dev/null +++ b/ExchangeRateUpdater/ExchangeRateUpdater/Currency.cs @@ -0,0 +1,20 @@ +namespace ExchangeRateUpdater +{ + public class Currency + { + public Currency(string code) + { + Code = code; + } + + ///

+ /// Three-letter ISO 4217 code of the currency. + /// + public string Code { get; } + + public override string ToString() + { + return Code; + } + } +} \ No newline at end of file diff --git a/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRate.cs b/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRate.cs new file mode 100644 index 0000000000..e93737eefb --- /dev/null +++ b/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRate.cs @@ -0,0 +1,23 @@ +namespace ExchangeRateUpdater +{ + public class ExchangeRate + { + public ExchangeRate(Currency sourceCurrency, Currency targetCurrency, decimal value) + { + SourceCurrency = sourceCurrency; + TargetCurrency = targetCurrency; + Value = value; + } + + public Currency SourceCurrency { get; } + + public Currency TargetCurrency { get; } + + public decimal Value { get; } + + public override string ToString() + { + return $"{SourceCurrency}/{TargetCurrency}={Value}"; + } + } +} \ No newline at end of file diff --git a/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateProvider.cs b/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateProvider.cs new file mode 100644 index 0000000000..42b9c9b2dc --- /dev/null +++ b/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateProvider.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; + +namespace ExchangeRateUpdater +{ + public sealed class ExchangeRateProvider + { + private const string CnbDailyUrl = + "https://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.txt"; + + private static readonly StringComparer CodeComparer = StringComparer.OrdinalIgnoreCase; + + private readonly HttpClient _http; + private readonly ILogger _log; + + // Reuse also prevents pointless allocations. + private readonly ConcurrentDictionary _currencyCache = new(CodeComparer); + + public ExchangeRateProvider(HttpClient http, ILogger log) + { + _http = http ?? throw new ArgumentNullException(nameof(http)); + _log = log ?? throw new ArgumentNullException(nameof(log)); + + // If someone forgot to configure it, keep us from hanging forever. + if (_http.Timeout == Timeout.InfiniteTimeSpan) + _http.Timeout = TimeSpan.FromSeconds(10); + } + + /// + /// Returns CZK->X exchange rates for requested currencies. + /// + public async Task> GetCzkBasedRatesAsync( + IEnumerable currencies, + CancellationToken ct = default) + { + if (currencies is null) throw new ArgumentNullException(nameof(currencies)); + + var requested = new HashSet( + currencies.Select(c => c?.Code).Where(s => !string.IsNullOrWhiteSpace(s))!, + CodeComparer); + + if (requested.Count == 0) + return Array.Empty(); + + // CNB daily.txt is CZK-based. If caller doesn't care about CZK, we can't help here. + if (!requested.Contains("CZK")) + return Array.Empty(); + + string body; + try + { + body = await DownloadWithRetryAsync(CnbDailyUrl, ct).ConfigureAwait(false); + } + catch (Exception ex) when (!ct.IsCancellationRequested) + { + _log.LogError(ex, "Failed to download CNB daily rates."); + throw; + } + + var all = ParseCnbDailyTxt(body); + + // Return only CZK->requested (excluding CZK->CZK) + var result = all + .Where(r => requested.Contains(r.TargetCurrency.Code) && + !CodeComparer.Equals(r.TargetCurrency.Code, "CZK")) + .ToList(); + + _log.LogDebug("CNB rates: parsed={Parsed}, returned={Returned}", all.Count, result.Count); + return result; + } + + private async Task DownloadWithRetryAsync(string url, CancellationToken ct) + { + const int maxAttempts = 3; + + for (var attempt = 1; attempt <= maxAttempts; attempt++) + { + try + { + using var req = new HttpRequestMessage(HttpMethod.Get, url); + + using var resp = await _http.SendAsync( + req, + HttpCompletionOption.ResponseHeadersRead, + ct) + .ConfigureAwait(false); + + if (IsTransient(resp.StatusCode) && attempt < maxAttempts) + { + var delay = Backoff(attempt); + _log.LogWarning("CNB request transient ({StatusCode}). Attempt {Attempt}/{Max}. Retrying in {Delay}ms.", + (int)resp.StatusCode, attempt, maxAttempts, (int)delay.TotalMilliseconds); + + await Task.Delay(delay, ct).ConfigureAwait(false); + continue; + } + + if (!resp.IsSuccessStatusCode) + { + throw new HttpRequestException( + $"CNB request failed: {(int)resp.StatusCode} {resp.ReasonPhrase}"); + } + + + return await resp.Content.ReadAsStringAsync(ct).ConfigureAwait(false); + } + catch (OperationCanceledException) when (ct.IsCancellationRequested) + { + // Caller canceled: don’t retry, just bubble. + throw; + } + catch (TaskCanceledException ex) when (attempt < maxAttempts) + { + // Timeout typically ends up here; treat as transient. + var delay = Backoff(attempt); + _log.LogWarning(ex, "CNB request timed out. Attempt {Attempt}/{Max}. Retrying in {Delay}ms.", + attempt, maxAttempts, (int)delay.TotalMilliseconds); + + await Task.Delay(delay, ct).ConfigureAwait(false); + } + catch (HttpRequestException ex) when (attempt < maxAttempts) + { + var delay = Backoff(attempt); + _log.LogWarning(ex, "CNB request failed (network). Attempt {Attempt}/{Max}. Retrying in {Delay}ms.", + attempt, maxAttempts, (int)delay.TotalMilliseconds); + + await Task.Delay(delay, ct).ConfigureAwait(false); + } + } + + throw new InvalidOperationException("Failed to download CNB exchange rates after multiple attempts."); + } + + private static bool IsTransient(HttpStatusCode code) + { + var n = (int)code; + return code == HttpStatusCode.TooManyRequests || (n >= 500 && n <= 599); + } + + private static TimeSpan Backoff(int attempt) + => TimeSpan.FromMilliseconds(250 * Math.Pow(2, attempt - 1)); + + + private List ParseCnbDailyTxt(string text) + { + if (string.IsNullOrWhiteSpace(text)) + throw new FormatException("Unexpected CNB response: empty body."); + + var lines = text.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries); + + // CNB daily.txt typically has 2 header lines, then data rows. + if (lines.Length < 3) + throw new FormatException($"Unexpected CNB response format. Lines={lines.Length}."); + + var czk = GetCurrency("CZK"); + var result = new List(capacity: Math.Max(0, lines.Length - 2)); + + for (int i = 2; i < lines.Length; i++) + { + // Expected: Country|Currency|Amount|Code|Rate + var parts = lines[i].Split('|'); + if (parts.Length != 5) + { + _log.LogDebug("Skipping CNB line {Line}: unexpected field count ({Count}).", i + 1, parts.Length); + continue; + } + + if (!int.TryParse(parts[2], NumberStyles.Integer, CultureInfo.InvariantCulture, out var amount) || amount <= 0) + { + _log.LogDebug("Skipping CNB line {Line}: bad amount '{Amount}'.", i + 1, parts[2]); + continue; + } + + var code = (parts[3] ?? "").Trim(); + if (code.Length != 3) + { + _log.LogDebug("Skipping CNB line {Line}: bad code '{Code}'.", i + 1, code); + continue; + } + + if (!decimal.TryParse(parts[4], NumberStyles.Number, CultureInfo.InvariantCulture, out var rate) || rate <= 0m) + { + _log.LogDebug("Skipping CNB line {Line}: bad rate '{Rate}'.", i + 1, parts[4]); + continue; + } + + var target = GetCurrency(code); + + // CNB provides CZK per (amount) units => normalize to CZK per 1 unit + result.Add(new ExchangeRate( + sourceCurrency: czk, + targetCurrency: target, + value: rate / amount)); + } + + if (result.Count == 0) + _log.LogWarning("CNB response parsed successfully but produced 0 rates. Header: '{Header}'", lines[0]); + + return result; + } + + private Currency GetCurrency(string code) + => _currencyCache.GetOrAdd(code.Trim(), c => new Currency(c.Trim().ToUpperInvariant())); + } +} diff --git a/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateUpdater.csproj b/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateUpdater.csproj new file mode 100644 index 0000000000..ca87ef7cea --- /dev/null +++ b/ExchangeRateUpdater/ExchangeRateUpdater/ExchangeRateUpdater.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + +