From 80fdde92b647c335c825fd609507ee305ee9116c Mon Sep 17 00:00:00 2001 From: julien Lengrand-Lambert Date: Thu, 22 Oct 2020 22:37:07 +0200 Subject: [PATCH] Make Http calls non-blocking and remove jackson * make Http call non-blocking * use Kotlin serialization Co-authored-by: Hielke de Vries --- .../6.3/executionHistory/executionHistory.bin | Bin 423140 -> 151068 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/6.3/fileContent/fileContent.lock | Bin 17 -> 17 bytes .gradle/6.3/fileHashes/fileHashes.bin | Bin 25747 -> 23897 bytes .gradle/6.3/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .gradle/6.5.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/6.5.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .gradle/6.5.1/gc.properties | 0 .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 +- .gradle/buildOutputCleanup/outputFiles.bin | Bin 19451 -> 18947 bytes .gradle/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/checksums/md5-checksums.bin | Bin 21747 -> 31997 bytes .gradle/checksums/sha1-checksums.bin | Bin 37451 -> 110018 bytes build.gradle | 15 +++--- .../nl/lengrand/swacli/Configuration.kt | 18 ++++++++ src/main/kotlin/nl/lengrand/swacli/SwApi.kt | 43 ++++++++---------- .../nl/lengrand/swacli/SwaCLIOptions.kt | 11 +++-- .../nl/lengrand/swacli/SwaCLIProgrammatic.kt | 13 ++++-- .../nl/lengrand/swacli/SwaCLISubCommands.kt | 9 +++- 20 files changed, 70 insertions(+), 41 deletions(-) create mode 100644 .gradle/6.5.1/fileChanges/last-build.bin create mode 100644 .gradle/6.5.1/fileHashes/fileHashes.lock create mode 100644 .gradle/6.5.1/gc.properties create mode 100644 src/main/kotlin/nl/lengrand/swacli/Configuration.kt diff --git a/.gradle/6.3/executionHistory/executionHistory.bin b/.gradle/6.3/executionHistory/executionHistory.bin index 8dfa377857ba714b6c9f634d61eee89a44890351..2e4c1816c6b75ff4dc9abf10641c0977d9ab6a93 100644 GIT binary patch literal 151068 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 TTKKxDuem0x9?ZzV&~yU;mu*+3 delta 56892 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 diff --git a/.gradle/6.3/executionHistory/executionHistory.lock b/.gradle/6.3/executionHistory/executionHistory.lock index e0e9bd000b2a624c044c5030d157c89711638651..c96d12c6c27536d42e64bac3e777567d00cf5e41 100644 GIT binary patch literal 17 TcmZS9ujDBF&X_0000Bk-AzK2| literal 17 VcmZSfk2$;9NB><50~jzZ2LLk_1jPUV diff --git a/.gradle/6.3/fileContent/fileContent.lock b/.gradle/6.3/fileContent/fileContent.lock index 49cb4d467c8a158d0c3065337d8314780b406694..d0a01c7b587008370fff1bce82ff1e753c1bd32c 100644 GIT binary patch literal 17 ScmZS9;gRZDEH$Z~0SW*gEdsCr literal 17 ScmZQ})(*bp@Y}zF0SW*sL<5-s diff --git a/.gradle/6.3/fileHashes/fileHashes.bin b/.gradle/6.3/fileHashes/fileHashes.bin index 0ad3a1c3976defc93c3b7c5b570db3de08d928fb..a2ae0d05f8377d971d50713d645497eb36b60b6e 100644 GIT binary patch literal 23897 zcmeI3i91!>|HqHv9J9e zQXxZ8p_HkNQM$r+@3Yo&ue1FDzvuVt^*pxoysY>Bd_M2B*53O();6S2B!#A6qx{>% z|NTgQA{`(dARQnbARQnbARQnbARQnbARQnbARQnbARQnbARQnbARQnbARQnb`2XU7 z9aac0C`MA99se*Vm_pIw$3AS2$_i<;8q~7{f3^%m|35gQ*rTN$BGd@D?Ki|@8b(XZ zg(9s1w?B;d(dh1%xp#}|0JjK7JYn0|ZZ-c~oq*Hb5l`Vi-oahm)du^2Mm%*+ayGw7 zzBAw^>4;}!FYnDfpPB@?xgFw}^HlfTFGx8HxbbVmv(H>_Z%wm54Y*m!G|xU3`_yjo z7~phG#B-X0MHj9L{|dN`HsTkZ52%EwN5lS(Mu=Zpzf>xyUL+6nH@}B?Ui4n-czAmS z;FfKO=kK42-lr=t3b;eTG#@e7y>mn;25{Srh~Jo)N3Sx|-U+zNIO2uf&77tW2h0Gs zxQY1v;nKzP2G;HY+&BmE2ftO0e>EPq0o`b7YzCm`Ok|5eDQvd)!&Tfad3eN3N_$DnpA;I5AmZ*2;yYS!k_0ou13Sq#FcO%|@!J>F+k_L=x>Wz4Z zx}spCb?hn7-`NlG&Q~=Lx--^m0`BUDc$dNPAr4x#FW}a`h<8V2XMAi~cpY%3M#OtG zZKw-^lv@BdS%LW1&DRFc=?b~P{#l6k&E3kk+pHxLaMKCI2X^qSdbHu~V!)lbruo#y zik2_2aK4%BKzwkmgOH}wo86$lZ7Jd-UjsgJr

^ZefY|_rsSr+tvN;2e?%;;y(-g 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 diff --git a/.gradle/6.3/fileHashes/fileHashes.lock b/.gradle/6.3/fileHashes/fileHashes.lock index 73f9a3fbd282f8471d3f4d07562e38b5cd1c7bfe..69a4035e8829096b4f52fa25eb860c9c6097c2b6 100644 GIT binary patch literal 17 VcmZR!*sD5e=~bI<1~6b01pqL71P1^B literal 17 VcmZS9JJ9i6`*rhj1~6dL0suL$1mOSx diff --git a/.gradle/6.5.1/fileChanges/last-build.bin b/.gradle/6.5.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/6.5.1/fileHashes/fileHashes.lock b/.gradle/6.5.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..a67d2e37477efb325c4037b847098a1d1b1e0392 GIT binary patch literal 17 TcmZSP-#n`};`yQ{3{U_7HroWE literal 0 HcmV?d00001 diff --git a/.gradle/6.5.1/gc.properties b/.gradle/6.5.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 66c48eefaf591a05409d3158c8a1c8e931f685e9..95b51e546c15b325767a8675cb42a72c1069b759 100644 GIT binary patch literal 17 TcmZSf_~*HMd7Lo=6qo@3FEs?Q#2+ z?wv>S%4Npb_L$~*F2YAuf6cehh!v`jLH1t+V_Qz zdP}~>{j&d*_M*X5?QZ9mF4>=0a%1ANwZ4u?LwlKdRl=JGA$GX+fU!{o3`@Fl;r}JDvz2fB*sr zAb literal 19451 zcmeI&drXaS9LMoTG?&n2vQ)G&6S}!%GI3lsPtW5rOi59UY+^b>wB^K*a>=C?mHT2S zIV$C{rB=v2b5^d+PK!1sYh_Au+VA^4W{owox$JYcPS0M?x9^_k-Sgi$Qzgm4rj=gO zx0n65LmZ(13ZMWApa2S>01BW03ZMWApa2S>01BW03ZMWApa2T|F9qhAZls5}83#9u zwgc-ZN%HDxI`EE7*LdY0JJ&~?_N(I054I+REU~RjZV)cVvv04@t2rGp%SO1entgY{ z(iFS8v#zwKtJy1$r-dXmR?(hG><8@kj-oj`j&m_2gJ*xdoaOKCol{X%SdoOWmQFxsESerdntG{&vd7TOcZ zel725O`-mTOnU~g7e|yn%P=N-2v^>*ms;G{C~ifLwC5iC-3|VG-+6u+Nb@RtW%%|} zFJfJz$(dV?g|Tx&_89cSnNb}tW?$NQTr8tM9nvyZqhCqIdI$|3K^KDzj@ls^4b z5&0Q*pYyMq3@uI7!qph|@wY<5Jg4*v6|QV%pI9&>(!ahTUbx&~_V-Z_&o!^OE8OoY zyGFY%Ay_*zhJ2RUi(A6SxwvPN`?61dS(kdjIlD%<@{HYIzbky^@-l;PxsW~Rxuzm@ z*b8UjsyF*$gKx>$kvHjnl_Bg)vW?4bm$^95d=7h9(&}#geYWbzE7(^JotCA0TfLL~ zIJ>s?YI#BR5i8+xIs2N8R!)cAOBV=N%FM2RzUh@A;|h5``}%zcYlG~HACTL#N9UGI zsG0BWN&AiLI{OKAep*M~-+fUnD v@9)F}f0g{ME9}Ugj?Da8pZ1#}rjkE-4*zVQ_W$Mf*VBHcBhryQKbZLnsYlNN diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock index a7faeee378d24884d274d487ebefdfcbf5c3de80..c1c077dac2e3c0b10d8c4203ab7b226b5375d116 100644 GIT binary patch literal 17 UcmZQBP@gCjnqcsm0Ss6j041ISV*mgE literal 17 VcmZQBP@gCjnqcsm0Sp*-001Tq1J?im diff --git a/.gradle/checksums/md5-checksums.bin b/.gradle/checksums/md5-checksums.bin index a7c2e8c21698ac85e818539ff7513ffe3437b34d..605db4fc575824546cbd6e6932ccc5b7a01e1785 100644 GIT binary patch literal 31997 zcmeI4d00(f^#5!oDv`12qXAKr5K1DUk|J{- zQ$!(=hzw;+-+k`d=lFi_J%8N)e$VrJ?tY%nxt_Q6I%}VG_FiYLbFYsvgCQqAj0fZI zkoo&Z-k*38;6;EJ0bT@n5#U9D7Xe-bcoE=5fENK?1b7kPMSvFpUIcg%;6;EJ0bT@n z5#UAO|Cb0jpbHU&i;>gdC;l)thQZJp&0z3}B}S|suUK(z8T@thHuC#}#Bbt)4S_5W*8h9@Kp5z@rIg+>@rCM!CR5N|B1wJAnGbJM<@o$Tw_8Q(=~eq}vOBB0 zKwn`->KS4yPYXVGT?2a1LQ404#$WaR)K}1#tCM;r-YHA@y#AR1G-wE z+viaF*T#MO*Bx~MeZyf=&x+h6__TP+4ba{ANIhFLt$h6SA|=p+srl#ZvzWG^y~W z4^>JJY+I)8=)VN?bylRlH_o#0i(%m&&^?t&eP8@ut?ofzynMaJllp#5l^A|6p>JRx zV^8V_uD2ik5u2q7y8Ts3|5@V^{mf(x=+-u*USt>lDc#rQ1?VfN>pI*k<$GzU#18Z| z)cq=zl-d+@C|(3~2Pg78rAIGc)VEwZ2lS{rq<(~XU6=3tSYivJv5uPmk;3J(K7>3y z3%aujWq-TrQoY}p5YXLPNWE;@yk|H1m2ZRY=SJ#B3!-GU)E7#FzIqI$KMgk1*;jWR z^mP@aeoTegH0&)W2zuC5N_Uu2;60L=2l{$yzZ^IEJbriGv1-uW8%g_eqkfY$&iB`Y z9wPkvF=yn36ebs~s`aZTlu7VzMlGLlM zWeqgP3siz`L*I!&Ov&!qHT zSD}qB@$?xX)c(4-%qP;!Uj9AUFRLT%>!)0rD3mBY3iP-eq~367iz&Ho+w7+`Ba3Ti|n z`TM$5e&^H*`hadp zt^c;!ewIOvMH@kPOs4F&mF~5&+;|=ISSoKk&K$Zp@pm774lX@R+CP~&dCmRjH*g-? z@QBo(MJY2YADdKj$j;FX&L0#`>d%+V(n!eJ!~~s5#j{J&x*)-E{3Xz1 zlu7%p9$A^4whIzLx1`qLE3Y?B5*s#<`Ry5L|LXeP6>3uyaJ{tV7pZq2+G*B&_5!{x z>m*WtJ$L`UdckeD&hfIM^f(=6@5A~8@Eb*~hu77IB|Aso!0R)VdcOBqW&Su{RzDf+ zt)`IY>9KWYZd$t83G}c&O21t3wQ+jWVbFuAJoz@j#w)h3CI|G@2BiJl%;HmRVmZ6wd%m!tJAs=yED zd6zMiep2nGSAvx>*tQq>Cmg`h{4QTjaZqroQ}$ARu-N$EFUBsb*Q+k(Dw z7O8)%0a%T#3>zMg)BOI5Qq}n@&>yKG*kvsT4oHE*~ln{5Umr>ek&>dSLH2 zowWbaV{^t%qZL13R(>P(pD)wD)fZKpfc^4aq&{S&ox5pn;{fRHUX&hOr`0#@mMG`} z-K75KZ1n8)tyK>|525OI#`afI^O6_h>#`Uk?HR`cB>d_%@ji+zr1aZ*O@&Wg4dFZ< zE~L(9Z|b>r>keGEtSY5+Pb<0K2Wz*1y-P8rH_1Pdt+B=V&4$X){2CTN_~ob10DJcV z(w=|w=$a6v<|xpeUXc38Nj{z5OXeAZzSfJ<=Pz?#H&nF_bnmg0ekp%bw{&V9=#lND zE?C(X7_ndFBIpPsgD-iKVu+mQ8wtI z4V1pd>`JAw4c?~#rzw4Fit-xy@_w*452f^LZ-{-Eg!u=w<)Le&MV#vnaA;cS+j@I zKkio_H``DHpFf<`$1YFFH#t7xG3b#dl%8DNx9`;>JpT}1QWv-Czn6O?tpM!ZGe})B zsVp$}rivlx0TU^`b@ly#rZ-POj|wJrsfQujuME`$L3i_`^hdevovJ%<{#oWm>ayP# z=;^fd9R+)zLQ4PBn}7X-8?M70YDr!0Zpz0Fy`^PfZ%f^GxkpPLpTBS_2y{m#X|E_} zqw#4VcPr@r?b`u|0aFxh~>6K0lRjr%ANT z+Yx>MKleS~lJ=^<{j~>F6c&N~dKprmer)5nsa}(IgB}?}>NDhWEBd9v^g&Hz|Y?eR34boI6v8OURpk!$GMEMzt-&&)-in+==RjQn$fyU zL34~Te!fRh`&vV8*n5760+=(FQ~OcNTcqOIVRgLzy^YB8Ydu=}PIGn*K93zK56||z zGJfagW_~!4R|WYO+EX=kuSUPeeQ3;CO4lB8m%e!%*E4=~l-_OqO2%Fj=K;S@q&`Pi z-X|_!Y%iSOhsp!GA*bRC%=MK(_st{i=ZcFeb}$3qTKlL+N); zMeE02pAWi^KB>>QN~rsO>pafS;naT7zZv;}x$h2+v*Q`kexcs2|3dZ(NWpo`3rXET zBgA!t8^1m1t0YL>P@y7XMrQq3&_mTJU3FF5BcZS?&~2BH`eLaAVLSON@H%ucAoV51 zgVASJ3gPEnI5nRoXOBK`lt@d2^Z4qL_Qur-KIc0==YeijL+U0n3$n#xYF~gJL+v9I zkCI_Se|4P40&GZo^P?kMHt!i_3-)%mNZm48T)C&~KO7%VdrIFH<8&d`3+IzKDi7ES z9-E(Tma-Afvx>T2TN$MTny+&9fgT}Gp2t?3*%BMIeh~Dadz8MkDe}iIMo9ALl?1PbTdh zY**`Ne0kRfdKi_59iEIdw)sm!TL0*`x#x$y4){O3+Hi)r*yxr+}cIA_k$jg zMC$%(lb^XSoX`RKDk`6>stwaA&vg|AJzABt4_dlnn!=Msk3bLBqx7hty?U=RDnO5; z_Dj%~uk~sD`3pghuq5rnCck?)XkLu#a69TeVR46~w3meb!hWfB6|tebth2iE06xzP z@;s4!{3#z7f5q#{dLpT>e(~`{;^CPQV86PU)YoWh$1CuO%mm$0iPYCxD0`ahoI4S8 zza5mGa;;J&{Bi>5Rt}V2J#NB>t2f%Q{*Kc7;-WStMPCHn|F8WY?;(+dPw}Ap-XQIx zLkHcnBJXYo-Li?&W3nA%nZr0AM!S%DLb`dZ?1kUc!QT5YrQh!S{j;hD=byMdQYSwd z40&&0ct>6YcoE=5fENK?1b7kPMSvFpUIcg%;6;EJ0bT@n5#U9D7Xe-bcoE=5fENK? z1pePfKnJ-eUUVxH|A`;F{lm}4&vRX&;OefurTkOSzZO`l|0o)NgX6jr8EO7sqObQy zV!c{(+{=nI<=mql$(RsFmT1VXLkBiuyMAhGXK(nV7# ziA>SB^|8k)WnA2n=cQ{LL*GB4S+&{V-^B@ta1wk{SsD#xGM`@sJB>{^bXuE5w9DgP z5^4Ey5+`4eTJ8SMJigm_?VeV<_2LN4HaE6A&V^0 zkbQ{`Y*+4baPNpyJM&kK5m8qCl4tT16R%kSL#~*UsNsLVxan#1*15h0U4M@B`v9RZ z9*D8%4D3G6^f{VdNWZUSE_rg#-ngb*f>6&}jb=v-{)6biHmiIygUXvvS~C?N&bxo+ zQpjW=HmI=x##rLsvk|sWzZnI5n>u^>H2FgrAz7H%xCscsU{0bz|H0<^?L7}4C#f3S zkCOCmoX4HG6 z)>n9>Ao}K$m{kg1S5s{`iC=}Y&DMIj%B4=&2UP10qVH|7yO466Rr0wLLkKG}SXpPfF-IppFV&4$|qZRLkqjl9H3udzg{#fZe<;=bZ{&^}Q>r$=i=b~Rn5kAuKbqL<%^ijQZPFSPJlJV0c>$J-+38UZd z5yZ}OFe?GHYS^#b)q9TNK-P)f&n@O#Z7AHh4g2T-VkFHze=YTI(gUAP)6n9Sp8QZx zbWXxY;aDI9iSLlvqAPm9cGv30K7D`NyV8%`lhEoWh+XcO=;b7aZdz=+x91bzxZS(E zZ@RmpJBC)t8UB+%NG;|hf_q}O?^_ftna=aUOgK&^&Q2XIr?YFSgFQCv!}$CA;ba5XCrO$)o+ke&uDI4IRyWnZw71 zpC9rc*NQBOSrv~4AFO|;#TKhe;oJ85t8TYbwb&V4@<&$zh@u!EM2LTBz(y2#T{-`| zGX0WSDF3wptB0($t6sUJ4hVt$oP=|A=;Y7O#}%a+HwpsGZ4QHVDnL> zZ_=^v2UF*M=kB@VOAG$62zdqKIgW-fO?0DT!n>UHdcWRnt6k<=>iLEs^xNfAfN(yA zKG}SHNZx0vH`c=|Y2n;=qx;{W-x9G1{QbNlu_DDSZy4)U=5LqslEvq=C`M0cVeftGWpuI>8YqT=ief&^JIWh9HfL>aik-Uj(`fp5} zU;zw8n*E`X63Mr&Zbq?|x?NZ(pBl>k|9e(KIh;NM^*S7$zMDRytxj#1=7bW~m21oK zm4FYSwVcGAfzi4hf4y=5ol<;KrE==G|Jx`32uzj;Tyvg`%?_hWC%BvFxbTN?) zJ|?1?jy<|VMT$ZyzaBoTiM@P(wp>*cCUD+Wc*jZn@U7C!wtD}>q5OGo@7bH^7lp)? zkGBUOVl)}9`?r0zqhGwhrB|JE=X$hVBM5_!SBRn*4Z2lgsk^*P!n|ma+MH*LJ|r(j zF=F{Z&kA0NX)E&E~T?@g)Ar`=pM5~6KI2l)>bbgvc$R9Vu zJ2FR~N)v>7z8(4`hCABD?8MrPXQ!Pf_5?1I?UpqvHJykFoJEDIIElE2iI=B*N!+OT z#ojbH-*PG@77-p$Wr=n%yAS!=8$XQO7=x3>TsIuFGZrNXgZ@?cI)v7660a*6a!!$o z?NZu%L-a)RSZfy%w+Igmh7iq4q^oz;q-s#ih{0{Wt0vWiB0vnfdY7&uQxi{V1cI(2 zqpK4UQH}|kE2pbP5rMN0T`fvig(Kn;_@Jx8=_)cr5LpKex{8dhZbw8R5P~%MimnR( zOVCx}bk(bxcrto|5`(UKrK?4e4-+8hYEimwLQQwRAN# zB4mM}tEuU#S2gieJ|MWQUXhQNKyX{VBH}U-bk!?e6|N?AoyeYO&{g4dwJ3@%@f1K~ zBuyRm*{vL?mgw%+|qa9i&pg4o|^(AB$i)hi;1 z-X9G?n(CFVLPiA9$rA)kg-loPBH{`V+}68@XaR!TdKVENfZ(>?RTEFM1A^On7ZG!S z;I`gHgd`Aj^)6j4YFYP%2?Sj&N>}gxC4^||UAmh3FF{vR)786(xC^u5w%$bqQ5mB_ zSMSojBSS42pnB*-;r6?4a$QLx_4xBbvq&!0zp@i(besUSPulZ zbvq(lf#9}oM+Etd%0VPshNG+75wQ<^(ADj9ZwC>9YEoj*y&a^h^i4GdT7lrU(zmSp zwi^g;D}6-Zo|D^39}&*rgWF0U5etBztMuura73U^k{EPVI9;W$?$w2#=XC3euA8u| z`>qT==(-8IN*@shKyX{>BO)INZYzC6;8ntHrH=^W9UmHWm44Q{35vCKK0}jZwJaq? z5`u|JU!&|Ot{M1=N||l7x7PKi3vS*1k8alCMH4=c?gOF{=Mw%KoJ3qml%VR#`(~GB zeY!b#HZ2Q?hc(2UQ0Enj4s1T&^(8!blj{3tSHSlO-ME#gALm=ErM-jLduY&g6Pn6D zgI{M((I{^=d=)6Sd@ey)cGNuq!gxOVWb=`B`={*zrwt#bJ^wsqO<{=;_CY+y(GVt9 zJsT0{7vsNBEyP#Yy*WlP$IKFZ)Z+{{me}uX#JxE`MilucwB;zg(6##S5sD@;t9s(e zj|Sa!Xa~r2E)>dlXgKGYyDTk)H7i7z0YP^iEiLW#U(z=pJf(iU)?$Eh60T!sG!R0E z(I?xi^s1U?%1-?#d__^(>)@DnG#l2e@IDut%}MCkmn}#w*?xU;ht_DTEfOprYT^e` zl!+m59v#?xbo&f7{Wr->p;^hGXQI4fKj8xrsw{vZlE+CrFpj-ssUYU?b^G@}zyFKt z!3647i6Kfn71(@yl`4BzEU|D?c82-eM!B)*iOKSTJ9<$)PU7X~Sr*ps+M8TgJeV}N zSmhP#%3q4%l_*JcM{GViXN#z7%UfmT2grGqC%Z!e4f~Ww`0vO#YW^lbdL!ilDMN6Al~`0 z`8eE>`_r*I|Knz-wC9S>OP>;int0I=vP45D03Fzf%j;&StV}4mE%r6hw*8UrAog*A z1u%31If*eRGTPmWdi68&-g{{oOQNckbq7BJp-a@HY(7>B3%nKkvZZV4t(~KWHS=C$ z0^dQgUz|i;Wa78GqPZ2_wzrBDYr9!K(3KOJ4UIWOHf8hCXdeGm;H{0e=Mg`Nz!~NW z_&SI?hsMI6=)gvF|EWIeFw?{5d&#=z0t)d>KuF=WJNI8sLTH_|L6m!w$tI;&Yy5Jv zO))W+@W5aMp*+m)Gq?*R%%};ACfd3z2o?x-u{JmT`rgnBnaM{>hyoFLzKu{Y(CU`-cSCeHcdyp zby>Cjv;nkcS=UjEeXQXmRP{D#S=y*&P1i8sTQNp86BBQNc#_6RFl`GPcHUh6r2l}{ z_aj;zr!a9J2ut+-oqblXl9CeUx4b-aAT>q6P*McNhM1MK6c7uEOviQ|JNu^u2+3`G zGxL0O`siQDtlX|9eu%i&Xe39Y0~;}V@Q~{fyK~L!W`qvgk6DPGvBVxcgjeDmlG$tPA7~qqyv{MHS4sXxGA6_b4-CeFBy?c&F(Od;+VsSa5qD$O=!8T+9|=S;%JIaI zxs48N1mEEeHXqM4zu8%{U}l6|IcpE1S)uhs3~8Efdwzw$Ero5{+xt6bmuV)c;mlC{ z4hVT7r?C0BYVEHiyX9iDn8Dqbi>#hI;OJTaA#j3|unM^seRP3yXiH*yqf&bVIwvb% z?F2$-3@72F*YLgTsLGhS;O-;8U5pB_4^JR;>N$zQhPcd9LlKR>(|(mrSC}ZHvF>>k z5Ul?f8QXQ_IyEq2TO?;!Y%SWYtaU}q z29236=)iUz!3M2wYvvj5%U-<3xN1`UULcBzr!pF%i_n3M7`o#9CVVK_=S0!C@#>2! z(CQ{)B}42aG$bR@fsJT-r!*z_?!B_Mh6N|u|5(4oK2XLchDa(pun~VG;yc1>S4NGk z9`*9vP2*44hb{|XND!ZF#K7I^5_8kZ{(0W9PU^M0(4Aw=${GlPBbm?UdUz+m;6T~wX4efL2z~&=KnQ!<@!GWX-RZn9%;hU^`j`jz>AHugdiF4Aahqq-^ zf4UoaJ};wX{XFbr2jKzroXzOK=Hpc1);h=EJC;pf9g}=8uFx5XarmjW_#P**O5)_k z)-nBt#xbH^Q9ie|F(E;CU@+2Xa^hHrZHHB)RSb>idnX7z+GkG?YU0%qK{PqtaP z%TMUYNxuXLc5pwtWHPdnPdpk#FL@YUL0z0ZZe<=%~t*IAYF0=~BS>|$UlFWlG4fbfy zv3w9QLW8cd+_r1rvdgh~gyZI!NZg+x0+j+d(o1K3>7Z4Nf0){UCGTH(u>@eH2~Cf{2UYgRWzt z>pu`t2L!kM$NwT|`VYEp0ugV(2VFNo*Rdc1sbEIif&!e z?GNU_kSNTGZhz4AgNPvC@8%(rZ6(s}C`3#FA9Op4u8%^*bRg*ZD7tq5%t3yAAh>-8 zfQaQl(7gko>!T160t8(jMc3W^CAjVG{uhBV1$%VqdNo93z^v$cHM*_{5xGFnbwzaD z-CrMc-5p)8hKK_2LD#F%^@E5YGBg@={UBYh#vB|m76@*8HRPio2yS~dL=Zh18r=43 zh`?_R=z2A}=LfnDvU)v_9I@>vy5|QXa2BQ8=XCF{5YfiE46ff_F$YIl0zsF3=z2~> zcwrx0_MC`V4FtD6CnB~0!EMipi2Xot+jAnK0{h^y=R^d44oY&_b0Xq9_~5qZL_`M= z-1eNzK>;-&xa~O+Ar1sx&q>!oqFH?gg06$4>rxRh00do^O4kn}0@Yc>pz8#e%HZ~mFmq54SIBg4gz0)`MBrMK z+ur#v!ENu12;8yg)T0QnWjMOt84;xrD{gydMBu#3ZSTw+6ap6vZhL3sgLsF52DiO4 zA|3(3ZSRa`MPwZ`xb2-0VFLuWy)z<+o&XJQduK#E1A^P$84(|V;I?;W4hrLbklWrF z5nRhxzU})T60!?~ delta 274 zcmXZWze@sP7zglkut^7nc%L^r^CCO%%|4?XVBjl?Apxffx^6?M~{>~5Zu#@Hqne0gtW(_+G=28_8c)8$Ras+DZlH3)UuaHtMX;hM;Qqj%b;_FI cZF)Bb#j2!!w_#a3UhMp+*eo-X+Qm!i560$RumAu6 diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin index b3eeb5b90ad9138c2ecffce7b397a5ee2c76bc9a..746b278f2f15df477be60d3490feaec7b753841f 100644 GIT binary patch literal 110018 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 delta 1004 zcmXX^T}+#06z)gXPDfW3lkPn)ql}+*x((=Cu&kYwpRv+%G0kEi-ZZcnmuSKz45vli z1mgvZ@d^79lX@{7i5DYtX55X;C2*l}7bf(^bXT?@q|6B`|IEkCH+jx^&dK?{_nh;* z5C3re`hCfrV^S@3B@Ujl%MOQeI~-Qur>|V7?Rk0ii~q6?$M7}=B@DmT=+z2o9Ymf! zR<1ErF36M{R30%HIihf|f;ANi_bLo_D+ITE8W~>zsY-)vrH1FILhh(RtSX3^Dg|e? z;5PBB+MuUKFj}KAO}|$YK(clih1wr5cPx$pzaZ!D$KY{6>QzCOxc8bMc0y1%p>gS? z!tBX@jGhYO(WwBubwLc(8D#1d-m4eP*7qabAo#7J8(jgxB#{Xy_{>GzFzh?1(Hi7z zLH13=8rff?!uh6dOf@MyYZ45+F7Sppb4V~lxS9>#Y!2XdGv_+3FnXH*C%j>euCT&* zSa6>RMKnet26GWXF%rPQ8TNRl4})(c;B3)oZZVi@Nx%~|7>jauQH?x(vX!$D6KxuE zZS0{<5N+4^wq0SjT~Oa481K-S>4+nBmNjP;qMd>?k?YhreC{jEoRhNkpND?w$iDMJ z%MZRo;m<1gbF9f36!IFC3xbga1J9yC@1kIues58s{x88i;aj3cOFH?t3kc^cvsN znnI`;#7I#vRaEe=U&NzzLBj@h+Avtzpbned;ilm6Cbin)w_6GWTiwWS2@Y>_*W29H zwn1nofr%ZB;tt=;ZsJhn{VU(JF0|c$G5m!u?Yl!(*#7#m#cOvJynEVyd)QK#-=j{? z#lHEWCHBKBG%<_j?njokT_t3lAJbeav6S7IV(#4(+2B61%sw)w(=zt&pI8Zd)WzJi zi^X}D)o)+>jBIj0OXl~J-MmUO`w~lijV*R diff --git a/build.gradle b/build.gradle index 8d82570..dc3c2f0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'java' id 'org.jetbrains.kotlin.jvm' version '1.4.10' + id 'org.jetbrains.kotlin.plugin.serialization' version '1.4.10' } apply plugin: 'kotlin-kapt' // required @@ -16,13 +17,15 @@ repositories { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib" - implementation 'com.fasterxml.jackson.core:jackson-core: 2.9.8' - implementation 'com.fasterxml.jackson.core:jackson-databind: 2.9.8' - implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8' implementation 'info.picocli:picocli:4.5.2' - implementation 'com.github.kittinunf.fuel:fuel:2.3.0' - implementation 'com.github.kittinunf.fuel:fuel-jackson:2.3.0' + implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0' + implementation 'io.ktor:ktor-client-core:1.4.1' + implementation 'io.ktor:ktor-client-core-jvm:1.4.1' + implementation 'io.ktor:ktor-client-apache:1.4.1' + implementation 'io.ktor:ktor-client-logging-jvm:1.4.1' + implementation 'io.ktor:ktor-client-serialization-jvm:1.4.1' + testCompile group: 'junit', name: 'junit', version: '4.12' @@ -44,7 +47,7 @@ kapt { task customFatJar(type: Jar) { manifest { - attributes 'Main-Class': 'nl.lengrand.swacli.SwaCLI' + attributes 'Main-Class': 'nl.lengrand.swacli.SwaCLISubCommands' } baseName = 'all-in-one-jar' from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } diff --git a/src/main/kotlin/nl/lengrand/swacli/Configuration.kt b/src/main/kotlin/nl/lengrand/swacli/Configuration.kt new file mode 100644 index 0000000..34b14d0 --- /dev/null +++ b/src/main/kotlin/nl/lengrand/swacli/Configuration.kt @@ -0,0 +1,18 @@ +package nl.lengrand.swacli + +import io.ktor.client.* +import io.ktor.client.engine.apache.* +import io.ktor.client.features.json.* +import io.ktor.client.features.json.serializer.* +import kotlinx.serialization.json.Json + +object Configuration { + + private val jsonSerializer = Json { ignoreUnknownKeys = true} + + fun getHttpClient() = HttpClient(Apache) { + install(JsonFeature) { + serializer = KotlinxSerializer(jsonSerializer) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/nl/lengrand/swacli/SwApi.kt b/src/main/kotlin/nl/lengrand/swacli/SwApi.kt index 2ce354d..86cc146 100644 --- a/src/main/kotlin/nl/lengrand/swacli/SwApi.kt +++ b/src/main/kotlin/nl/lengrand/swacli/SwApi.kt @@ -1,34 +1,31 @@ package nl.lengrand.swacli -import com.fasterxml.jackson.databind.DeserializationFeature -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.module.kotlin.registerKotlinModule -import com.github.kittinunf.fuel.Fuel -import com.github.kittinunf.fuel.jackson.responseObject - -val mapper: ObjectMapper = ObjectMapper().registerKotlinModule().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) +import io.ktor.client.request.* +import io.ktor.http.* +import kotlinx.serialization.Serializable const val BASE_URL = "https://swapi.dev/api" -class SwApi { - companion object{ - fun getPeople(query : String?) : Response { - return Fuel.get("$BASE_URL/people/${queryString(query)}") - .header("accept", "application/json") - .responseObject>(mapper).third.get() - } +object SwApi { + + private val httpClient = Configuration.getHttpClient() - fun getPlanets(query : String?) : Response { - return Fuel.get("$BASE_URL/planets/${queryString(query)}") - .header("accept", "application/json") - .responseObject>(mapper).third.get() + suspend fun getPeople(query : String?) : Response { + return httpClient.get("$BASE_URL/people/${queryString(query)}") { + header("Content-Type", ContentType.Application.Json.toString()) } + } - private fun queryString(query: String?) = if(query == null) "" else "?search=${query}" + suspend fun getPlanets(query : String?) : Response { + return httpClient.get("$BASE_URL/planets/${queryString(query)}") { + header("Content-Type", ContentType.Application.Json.toString()) + } } + + private fun queryString(query: String?) = if(query == null) "" else "?search=${query}" } -sealed class Data -data class Response(val count: Int, val next : String?, val previous : String?, val results : List) -data class Planet(val climate: String, val name: String, val gravity: String, val orbital_period: String, val diameter: String) : Data() -data class People(val name: String, val height: String, val mass: String, val hair_color: String, val homeworld: String, val birth_year: String) : Data() \ No newline at end of file +@Serializable sealed class Data +@Serializable data class Response(val count: Int, val next : String?, val previous : String?, val results : List) +@Serializable data class Planet(val climate: String, val name: String, val gravity: String, val orbital_period: String, val diameter: String) : Data() +@Serializable data class People(val name: String, val height: String, val mass: String, val hair_color: String, val homeworld: String, val birth_year: String) : Data() \ No newline at end of file diff --git a/src/main/kotlin/nl/lengrand/swacli/SwaCLIOptions.kt b/src/main/kotlin/nl/lengrand/swacli/SwaCLIOptions.kt index aa5acd7..af8c494 100644 --- a/src/main/kotlin/nl/lengrand/swacli/SwaCLIOptions.kt +++ b/src/main/kotlin/nl/lengrand/swacli/SwaCLIOptions.kt @@ -1,5 +1,6 @@ package nl.lengrand.swacli +import kotlinx.coroutines.runBlocking import picocli.CommandLine import picocli.CommandLine.* import java.util.concurrent.Callable @@ -28,10 +29,12 @@ class SwaCLIOptions : Callable { } override fun call(): Int { - if(exclusive.characters) - PrettyPrinter.print(SwApi.getPeople(searchQuery)) - if(exclusive.planets) - PrettyPrinter.print(SwApi.getPlanets(searchQuery)) + runBlocking { + if (exclusive.characters) + PrettyPrinter.print(SwApi.getPeople(searchQuery)) + if (exclusive.planets) + PrettyPrinter.print(SwApi.getPlanets(searchQuery)) + } return 0 } diff --git a/src/main/kotlin/nl/lengrand/swacli/SwaCLIProgrammatic.kt b/src/main/kotlin/nl/lengrand/swacli/SwaCLIProgrammatic.kt index 65ff103..81ed7e3 100644 --- a/src/main/kotlin/nl/lengrand/swacli/SwaCLIProgrammatic.kt +++ b/src/main/kotlin/nl/lengrand/swacli/SwaCLIProgrammatic.kt @@ -1,5 +1,6 @@ package nl.lengrand.swacli +import kotlinx.coroutines.runBlocking import picocli.CommandLine import picocli.CommandLine.IExecutionStrategy import picocli.CommandLine.Model.CommandSpec @@ -7,7 +8,7 @@ import picocli.CommandLine.Model.PositionalParamSpec import picocli.CommandLine.ParseResult import kotlin.system.exitProcess -object SwaCLIProgrammatic { +object SwaCLIProgrammatic { private fun run(parseResult: ParseResult): Int { val helpExitCode = CommandLine.executeHelpRequest(parseResult) @@ -17,10 +18,12 @@ object SwaCLIProgrammatic { val subResult = parseResult.subcommand() val searchQuery = if (subResult.hasMatchedPositional(0)) subResult.matchedPositional(0).stringValues()[0] else null - if (subResult.commandSpec().name() == "planets") - PrettyPrinter.print(SwApi.getPlanets(searchQuery)) - if (subResult.commandSpec().name() == "people") - PrettyPrinter.print(SwApi.getPeople(searchQuery)) + runBlocking { + if (subResult.commandSpec().name() == "planets") + PrettyPrinter.print(SwApi.getPlanets(searchQuery)) + if (subResult.commandSpec().name() == "people") + PrettyPrinter.print(SwApi.getPeople(searchQuery)) + } } return 0 } diff --git a/src/main/kotlin/nl/lengrand/swacli/SwaCLISubCommands.kt b/src/main/kotlin/nl/lengrand/swacli/SwaCLISubCommands.kt index 1a07787..7b4e362 100644 --- a/src/main/kotlin/nl/lengrand/swacli/SwaCLISubCommands.kt +++ b/src/main/kotlin/nl/lengrand/swacli/SwaCLISubCommands.kt @@ -1,5 +1,6 @@ package nl.lengrand.swacli +import kotlinx.coroutines.runBlocking import picocli.CommandLine import picocli.CommandLine.* import picocli.CommandLine.Model.* @@ -37,7 +38,9 @@ class PlanetsCommand : Callable { private var searchQuery : String? = null override fun call(): Int { - PrettyPrinter.print(SwApi.getPlanets(searchQuery)) + runBlocking { + PrettyPrinter.print(SwApi.getPlanets(searchQuery)) + } return 0 } } @@ -49,7 +52,9 @@ class PeopleCommand : Callable { private var searchQuery : String? = null override fun call(): Int { - PrettyPrinter.print(SwApi.getPeople(searchQuery)) + runBlocking { + PrettyPrinter.print(SwApi.getPeople(searchQuery)) + } return 0 } } \ No newline at end of file