package Ġinfo . jd avid . as yn k . http . client Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . sun . net . http server . Https Configurator Ċ import Ġcom . sun . net . http server . Https Parameters Ċ import Ġcom . sun . net . http server . Https Server Ċ import Ġinfo . jd avid . as yn k . http . Headers Ċ import Ġinfo . jd avid . as yn k . http . MediaType Ċ import Ġinfo . jd avid . ok . server . HttpServer Ċ import Ġinfo . jd avid . ok . server . Https Ċ import Ġinfo . jd avid . ok . server . RequestHandler Ċ import Ġinfo . jd avid . ok . server . RequestHandler Chain Ċ import Ġinfo . jd avid . ok . server . Response Ċ import Ġinfo . jd avid . ok . server . Status Lines Ċ import Ġinfo . jd avid . ok . server . handler . Handler Ċ import Ġinfo . jd avid . ok . server . handler . Request Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . Http Url Ċ import Ġok io . Buffer Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Disabled Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . security . KeyStore Ċ import Ġjava . security . Secure Random Ċ import Ġjava . security . cert . X 5 0 9 Certificate Ċ import Ġjava . util . Base 6 4 Ċ import Ġjavax . net . ssl . Hostname Verifier Ċ import Ġjavax . net . ssl . Https URLConnection Ċ import Ġjavax . net . ssl . Key ManagerFactory Ċ import Ġjavax . net . ssl . SSL Context Ċ import Ġjavax . net . ssl . SSL Session Ċ import Ġjavax . net . ssl . Trust ManagerFactory Ċ import Ġjavax . net . ssl . X 5 0 9 Trust Manager Ċ Ċ @ Disabled Ċ class ĠSecure Tests Ġ{ ĊĊĠ Ġprivate Ġval Ġcert Ġ= Ġ""" ĊĠĠĠ ĠM II Ju Q IB Az CC CX 8 G CS q G SI b 3 DQ E HA a CC CX AE g gl s MI IJ a D CC BB 8 G CS q G SI b 3 DQ EH B q CC BB Aw gg QM ĊĠĠĠ ĠAg E AM I IE BQ Y JK o ZI h vc NA Qc B MB w GC iq G SI b 3 DQ E MA QY w Dg QI ha 1 VA o / Tu P 8 C Agg Ag IID 2 Hb NX Q 5 e ĊĠĠĠĠ 0 v 4 X UD n D fg ky zl RL uv h H + 5 Y UL XN Wx h D 1 e I 3 8 V gh j 5 Rr O 5 y uk hm Jr 4 sz q 1 Hy h 7 Ox Zb 9 Ec Rx OD 5 qz Q ĊĠĠĠ ĠL v Qq 8 h MS M lw 1 y Qa Dd E 6 5 rv zw K / l P aw bc NM H Sl 9 9 y 2 0 yj Ek hr vw OH rt NE pj ga 9 CB ve k 5 H 5 Tr t 4 ec j ĊĠĠĠ Ġs / 2 so fk Ll 6 L tz AT 0 Q Ke AN b S 8 xf Dy U au u J WE 7 n / W ci 9 MW yc xD UX kt EC x 2 EK Ae EE 6 zy W 3 eto Il ut cx ĊĠĠĠĠ 0 3 p UF bx gx W 9 j 0 3 f Ng M + Tk zl Ae 1 uv j U AW W fd J 7 A FA + v + G 7 mz W 3 h XZ Cp PP g Dn na Xl Hd Nx Hp / Qk K LI w ĊĠĠĠ ĠJ 0 BU 5 Hd KR 8 rt z Yt Tk L SA Hl Z yo / ta Mr j Kz Al U vh Fz 5 6 Xs DA 6 LX VF 2 fl Kv Lk 8 i 2 y da N + Z Hi Vh AU G dh ĊĠĠĠ ĠK m 1 8 R 3 Df 7 if V HS fu Q AB Xh TR 9 rl Oo K ou w V ln h TV GL a LL t 1 6 rt wq Y U 1 v 7 Bl w 5 tz om qz Ts 6 AM Id Yh 9 / ĊĠĠĠ Ġq R AX q E HD q CG 8 l 7 tw X st 3 I vr N vs FY ML 4 JW 5 o Jc 8 i XI b 3 y D 5 US Ff IOR N BN v SU Jr C 2 BM tB 7 L cy k FE k + ĊĠĠĠ Ġb 9 / Rf agy CU 0 g / g PC 3 Lb 3 dw / c Ah ZW jy DF J 6 CL x P My WV 4 4 8 Pr 2 m BH 0 a 6 w Gl 4 u LU le SZ h sm q vm q kn Ua ĊĠĠĠĠ 1 Z MW t kt v R + YP sy cm + f G 5 xg do h 0 a 5 ax 4 NT Tp B CT m Jo U Fs 9 w Py LF Hp G xj hr P + l JH / Eb R mn M kt 4 8 2 D 0 ĊĠĠĠ Ġr k TO 3 Zx zh h H ed 6 Sv Ds A 5 WP VI c B + 5 T ey Q 1 0 m Sk Ko Ex Du WX E AI / Mm Was v J 3 e Env w / f 1 / t 5 D JR l Z AQ T ĊĠĠĠ ĠK E 1 8 0 kn IC 4 a Qg O IF QK qn J NA Kh L gd ZZ i 1 e jq c XE Wg Q eb Xe Z 3 ud I 6 Gi / LW k H / ns RQ 0 W rf V ND da L adv ĊĠĠĠ ĠY d Rx Tz hs Vx + eo UD vl 8 Tc DD HG xd Uh st 4 c 9 v 9 Ra PQ Pr Oi 4 Xy X qz 4 3 Z + Wd L MC V uf wj 3 Ef 9 P 1 0 6 pq hz s ĊĠĠĠ ĠWR nf OT Ez W 0 0 P PS 3 y E 4 2 n HJ XI AF j Vz 5 a B q WV GM x I Uk Ij 8 KN rs 4 Tr zn fu R 9 dg TX L 4 7 TT fx S ra WJ PL B ĊĠĠĠ Ġd K pr sw ED Ir 6 W 2 Di 7 PR z / t 1 0 n R + 0 q F kd GZ r Fd J CV l Fn Yg + e X 2 8 DL N 1 Oh T me y K Qc P mz 4 J GL UM 5 I kk 4 ĊĠĠĠĠ 7 m + P 8 5 B 6 0 6 tb Jg + r O Di N zm h 8 GE h OA 4 7 Q Th v B 7 we RH 4 r 0 eg 7 Pm jv R ux uE ES 7 5 Sw i + w 2 tt Gm 3 B 2 + G 6 ĊĠĠĠ ĠN k F GB rs dd Dx R 1 4 Vi JR a 1 HK VP n I ut n aj MS z K 3 s NZ d 9 1 + dk Uv Wl 6 u N It 8 sl At 3 ns ZK QL 5 J / so 7 QR aN ĊĠĠĠ Ġq GW sv TI l 5 / q / BH gw U HB + z 4 0 3 K tg dm SY vu B GO q X te ii YS + qk / 3 V 1 L J 7 u / x 5 J // Q 4 I 0 8 mg P 6 v Q / ZL 9 ĊĠĠĠ Ġmk CO i 4 Tl FA J qt T CC BU EG CS q G SI b 3 DQ E HA a CC B TI E gg Uu MI IF Kj CC B SY GC yq G SI b 3 DQ EM Cg E Co I IE ĊĠĠĠĠ 7 j CC BO ow H AY KK o ZI h vc NA Qw BA zA OB Ag SF h Y 4 S 4 lq 8 g IC C AA E gg TI A 3 L 3 F vl R 7 2 X PP Kw D + 3 t KE f TM ĊĠĠĠ Ġu Oy zx IH 9 d H fy 9 ag c D 6 f Op v M 7 B My LK lj L hq x NY ZO v C 9 BB MB ln f Cy GS 8 j 7 2 Up c TL mr F 5 pod Vm Vp 5 4 g ĊĠĠĠ Ġx ME 4 vs bs ab U 8 7 h gi X ma zt g Q vt EK zw G jj f + em 1 Gy R 8 m X GQ b H xw Pk ws P fd 8 W 1 CA VO y K rig R dc ex V it ĊĠĠĠ ĠAv ki L 1 Bp 7 o Il 6 WD 1 ug 5 Y d / s MU In a 0 6 K utr C pf Jk CK wv 5 2 2 0 Sm 0 0 p 5 l 6 z / DH t 2 i 5 xF Zz C 6 nl 2 W 3 O a ĊĠĠĠ Ġm N 5 1 nv K ED S 2 1 em 2 l KV 6 w 4 w UT + TX u 7 Dv N 8 ZW uty Kl + F 5 O 1 6 Yh Mk Y 8 ALP 8 2 Qx + e Z jq if Dr O 2 tk za D 1 ĊĠĠĠ Ġdh U ZG 8 2 M 0 su 2 yx Mi 3 i 4 Os D Zy j CG S 7 KJ Y 9 9 J HI eg 3 6 0 o 8 h 1 Sz BB mq RT b W TS + J zf +/ d H 6 jQ + fl Qr 6 c ĊĠĠĠ Ġ+ m Y C ry W gg k R 1 NH DK 3 q 9 / t U bj tf i 0 4 th x RS 6 WX Sm Fk O DB a HO i ue Ns UL k Gp M XX 0 dp 3 w 6 mg xj H IE AS 2 ĊĠĠĠ ĠI 2 / DH Ml 6 5 1 8 jh V 7 Rk Hu Qz W tb 2 lw X Hi uk q MY H wm Q 4 o + yf VN hc D las yn m I 0 5 d Vc Wk A He VS 6 1 B 0 IL qe ĊĠĠĠ Ġah W oa X j Kk O 8 h MB j rr L bv / OK vs ES u 0 + qa P fd 6 bm z GH Bj Bd TH m Hs 7 V Zi P 8 T + l O 3 Vo Ze R 6 wl 1 0 Mo Y rg ĊĠĠĠ ĠE GQ k 1 T vk FL G 7 q pt U 3 nf G 6 6 2 y 2 o Ne Sh 8 Pr pf v O q Mo Bp fo 3 BZ 1 n 6 Xo OB hy Y FK V dal zg 6 aL 7 O 0 QE ga B ĊĠĠĠ ĠP s 9 Tg D 0 Zi wj ku B wx CB k H 5 y qw E Jr BX Zr 5 h 3 7 Pr B 6 Xl 6 6 JO 5 uo NS KB d + qg T + 6 8 P Me DO Z fm Nv 3 I 6 iza ĊĠĠĠ Ġk d // J 2 j CO y gd q BZ A + Nd D / ap 5 b Ak IC f 8 b vc 2 g J Fu 2 + Vo / Zv gg mJ / U / CC m 1 O + VS ll Ol 3 YX r CS 4 XO 5 z ĊĠĠĠ ĠV U Hl Bs N BS N PO t Ax qq ph 5 QL f C rt Ww V tp 7 d Gu Zv FI v W 0 5 zh Er Z Tw U ea Po S du HX J Mgr HQ H HL WK wu / bi ĊĠĠĠ ĠV PK lw Kb 8 4 b R GA / i CY p 9 KT sb ge IW nb 3 J RE y 3 UU lf 1 RW Wz pc 0 + 5 R 6 CZ i 0 l pt 7 F HU yb + ev pg s M + 2 7 Lc ĊĠĠĠ Ġe 0 OF q Ta 9 F SP qm M mp + g ph 3 fo 3 / ER 1 vi HT vz AZ H HO + ux h Ds X ll U JF 3 lx u Sx / f 7 u G 7 ms GW y X PF u Pp 5 Y ĊĠĠĠ ĠL j / 9 2 u 6 2 3 L FL cy 1 r 1 zk c Jo j / WB 1 Rc 0 / sz + H 7 K cz jz 7 n cv 2 y DT 2 WX 7 xj r XF 1 AS v H sl Y nr 0 d 7 X 5 1 Hh ĊĠĠĠ ĠF 2 y M ipa 3 pm Hz Jp KJ 5 A 3 2 4 BS z UZ xt WV YW 4 m 2 M mw E 2 o yr UU 2 3 7 5 Q on k J 2 E ty 1 q bh Lb BK b 5 r + ac Hl H 7 ĊĠĠĠ ĠB 9 N UI h ym nh U au vx k + MQ k JU 7 2 8 GW DD 5 Nc 6 Xd Gg N 8 Ai Ia Ee 5 6 X hp K / b xd 3 ln CW q L 3 Uz O 3 UH 3 Vd D no K ĊĠĠĠ Ġp H IV NG Co Ke D 6 c 9 r Ng P Ne 7 JK K py p dd 9 O Tr AP ZK wz g KT 2 1 CC W 0 dd j J 6 K 7 k co 4 LW doc C 4 SN nab r 3 + c B ĊĠĠĠ Ġx J 6 m 6 Wv C 6 c URN xx d J 8 Fh Y + 5 kc Mc Xp Px H / 9 g B 4 L ZN Z Ve 8 x Pq JD hd Ab Oy F + Jr 8 og s L ry + CT q Q 2 v Jr L ĊĠĠĠ ĠG IV GH o NW io B HX 2 l pi i E 4 Sw ag 4 a BQ 5 ati ZX d MC rb AC / u 2 std XQ z 1 2 Fl uj Zi X 8 a Yn Mb pg jk 9 Q FL 1 pj ĊĠĠĠ Ġx 2 Nf N IX l FT VE o + F 2 o 3 p 6 ey X 0 3 FO 1 4 8 nP Wy Sz E 2 s DN 1 py + LW At ex Jq SY 1 N 1 1 6 m 5 aG / l UN Zq SG + Ap X ĊĠĠĠ Ġs UC n 4 z An R 5 3 q MS Uw I wY JK o ZI h vc NA Qk VM RY EF MC W 9 D hh / Pf 9 Kq U OK K ig P 0 my JH qi M DE w IT AJ Bg Ur ĊĠĠĠ ĠD g MC Gg U ABB TW JE Vy G qo FU h M 4 wp Q rg 1 Ch 8 ZC ec AQ I vt Pb MG b WP Bo C Agg A ĊĠ Ġ""" . trim Indent () ĊĊĠ Ġfun Ġserver () Ġ{ ĊĠĠĠ ĠSystem . setProperty (" javax . net . debug ", Ġ" ssl ") ĊĠĠĠ Ġval Ġcontext Ġ= ĠSSL Context . getInstance (" TLS "). apply Ġ{ ĊĠĠĠĠĠ Ġinit ( ĊĠĠĠĠĠĠĠ ĠKey ManagerFactory . getInstance ( Key ManagerFactory . getDefault Algorithm ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store . getInstance (" PKCS 1 2 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload ( ByteArray InputStream ( Base 6 4 . get Mime Decoder (). decode ( cert )), Ġchar ArrayOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar ArrayOf () ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. key Managers , ĊĠĠĠĠĠĠĠ ĠTrust ManagerFactory . getInstance ( Trust ManagerFactory . getDefault Algorithm ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store . getInstance (" J KS "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload ( null , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. trust Managers , ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠHttp s Server . create ( Inet SocketAddress ( 8 1 8 1 ), Ġ 0 ). apply Ġ{ ĊĠĠĠĠĠ Ġhttps Configurator Ġ= Ġobject : ĠHttp s Configurator ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconfigure ( params : ĠHttp s Parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġparams . set SSL Parameters ( context . default SSL Parameters ) ĊĠĠĠĠĠĠĠĠĠ Ġparams . protocols Ġ= ĠarrayOf (" TLS v 1 . 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcreate Context ("/ test ") Ġ{ Ġexchange Ġ-> Ġexchange . send Response Headers ( 2 0 0 , Ġ 0 ) Ġ} ĊĠĠĠĠĠ Ġcreate Context ("/ test 2 ") Ġ{ Ġexchange Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġ" Test 2 ". toByteArray () ĊĠĠĠĠĠĠĠ Ġexchange . send Response Headers ( 2 0 0 , Ġbytes . size . to Long ()) ĊĠĠĠĠĠĠĠ Ġexchange . response Body . write ( bytes ) ĊĠĠĠĠĠĠĠ Ġexchange . response Body . close () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcreate Context ("/ test 3 ") Ġ{ Ġexchange Ġ-> ĊĠĠĠĠĠĠĠ Ġexchange . response Headers . set ( Headers . CONTENT _ TYPE , ĠMediaType . TEXT ) ĊĠĠĠĠĠĠĠ Ġexchange . send Response Headers ( 2 0 0 , ĠBY TES . size . to Long ()) ĊĠĠĠĠĠĠĠ Ġexchange . response Body . write ( BYTES ) ĊĠĠĠĠĠĠĠ Ġexchange . response Body . close () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġexecutor Ġ= Ġnull ĊĠĠĠ Ġ}. start () ĊĠ Ġ} ĊĊĠ Ġfun Ġserver 2 () Ġ{ ĊĠĠĠ ĠSystem . setProperty (" javax . net . debug ", Ġ" ssl : data ") ĊĠĠĠ ĠHttp Server (). ĊĠĠĠĠĠ Ġrequest Handler ( RequestHandler Chain (). ĊĠĠĠĠĠĠĠ Ġadd ( object : ĠHandler Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsetup () Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle ( request : ĠRequest , Ġparams : ĠArray < out ĠString >): ĠResponse . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse . Builder (). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Line ( Status Lines . OK ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody (" Test ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( method : ĠString , Ġurl : ĠHttp Url ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" get ". equals ( method . toLowerCase ()) Ġ&& Ġurl . encoded Path () Ġ== Ġ"/ test ") Ġempty Array < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ}). ĊĠĠĠĠĠĠĠ Ġadd ( object : ĠHandler Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsetup () Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle ( request : ĠRequest , Ġparams : ĠArray < out ĠString >): ĠResponse . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse . Builder (). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Line ( Status Lines . OK ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Length ( BYTES . size . to Long ()). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( okhttp 3 . MediaType . parse ( MediaType . TEXT ) !! , ĠBY TES ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( method : ĠString , Ġurl : ĠHttp Url ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" get ". equals ( method . toLowerCase ()) Ġ&& Ġurl . encoded Path () Ġ== Ġ"/ test 2 ") Ġempty Array < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ). ĊĠĠĠĠĠ Ġports ( 8 0 8 0 , 8 1 8 1 ). ĊĠĠĠĠĠ Ġhttps ( Https . Builder (). certificate ( Base 6 4 . get Mime Decoder (). decode ( cert ), Ġfalse ). build ()). ĊĠĠĠĠĠ Ġstart () ĊĠ Ġ} ĊĊĠ Ġval ĠBY TES Ġ= ĠBase 6 4 . get Mime Encoder (). encode ( Secure Random . get Seed ( 4 8 0 0 0 )) ĊĊĠ Ġ@ Test Ġ@ Disabled ĊĠ Ġfun Ġtest JDK () Ġ{ ĊĠĠĠ Ġserver () ĊĊĠĠĠ ĠSystem . setProperty (" jdk . tls . client . cipher Su ites "," TLS _ RSA _ WITH _ AES _ 1 2 8 _ CBC _ SHA ") ĊĠĠĠ ĠSSL Context . setDefault ( ĊĠĠĠĠĠ ĠSSL Context . getInstance (" TLS "). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( null , ĠarrayOf ( object : ĠX 5 0 9 Trust Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Client Trusted ( chain : ĠArray < out ĠX 5 0 9 Certificate > ?, Ġauth Type : ĠString ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Server Trusted ( chain : ĠArray < out ĠX 5 0 9 Certificate > ?, Ġauth Type : ĠString ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Accepted Iss u ers (): ĠArray < X 5 0 9 Certificate >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ}), Ġnull ) ĊĠĠĠĠĠĠĠ Ġdefault SSL Parameters . protocols Ġ= ĠarrayOf (" TLS v 1 . 2 ") ĊĠĠĠĠĠĠĠ Ġ// default SSL Parameters . cipher Su ites Ġ= ĠarrayOf (" TLS _ RSA _ WITH _ AES _ 1 2 8 _ CBC _ SHA ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġ( java . net . URL (" https :// localhost : 8 1 8 1 "). open Connection () Ġas ĠHttp s URLConnection ). apply Ġ{ ĊĠĠĠĠĠ Ġhostname Verifier Ġ= Ġobject : ĠHost name Verifier Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify ( hostname : ĠString ?, Ġsession : ĠSSL Session ?) Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. connect () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Headers () Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠGet . url (" https :// google . com "). send ( false ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 3 0 1 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals (" https :// www . google . com /", Ġresponse . headers . value ( Headers . LOCATION )) ĊĠĠĠĠĠ ĠAssertions . assertEquals (" close ", Ġresponse . headers . value ( Headers . CONNECTION )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Redirect () Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠGet . url (" https :// www . google . com / "). send () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 2 0 0 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals (" close ", Ġresponse . headers . value ( Headers . CONNECTION )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Content () Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġdata Ġ= ĠSecure Random . get Seed ( 9 0 0 0 ) ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠPost . url (" https :// http bin . org / anything "). body ( data , ĠMediaType . OCT ET _ STREAM ). send () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 2 0 0 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( MediaType . JSON , Ġresponse . headers . value ( Headers . CONTENT _ TYPE )) ĊĠĠĠĠĠ ĠAssertions . assertEquals (" close ", Ġresponse . headers . value ( Headers . CONNECTION )) ĊĠĠĠĠĠ Ġval Ġn Ġ= Ġresponse . headers . value ( Headers . CONTENT _ LENGTH )?. toInt () Ġ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( n ) ĊĠĠĠĠĠ Ġresponse . body . get ( bytes ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 0 , Ġresponse . body . remaining ()) ĊĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠ Ġval Ġmap Ġ= ĠObjectMapper (). readValue ( bytes , ĠMap :: class . java ) Ġas ĠMap < String , Ġ*> ĊĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠ Ġ" data : application / octet - stream ; base 6 4 , ${ Base 6 4 . get Encoder (). encode ToString ( data )} ", Ġmap [" data "] ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Large Content () Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġdata Ġ= ĠSecure Random . get Seed ( 1 1 7 2 8 ) Ġ Ġ// Ġ 1 1 7 2 7 Ġworks Ġfine ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠPost . url (" https :// http bin . org / anything "). body ( data , ĠMediaType . OCT ET _ STREAM ). send () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 2 0 0 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( MediaType . JSON , Ġresponse . headers . value ( Headers . CONTENT _ TYPE )) ĊĠĠĠĠĠ Ġval Ġn Ġ= Ġresponse . headers . value ( Headers . CONTENT _ LENGTH )?. toInt () Ġ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( n ) ĊĠĠĠĠĠ Ġresponse . body . get ( bytes ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 0 , Ġresponse . body . remaining ()) ĊĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠ Ġval Ġmap Ġ= ĠObjectMapper (). readValue ( bytes , ĠMap :: class . java ) Ġas ĠMap < String , Ġ*> ĊĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠ Ġ" data : application / octet - stream ; base 6 4 , ${ Base 6 4 . get Encoder (). encode ToString ( data )} ", Ġmap [" data "] ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest S () Ġ{ ĊĠĠĠ Ġserver 2 () ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠGet . url (" https :// localhost : 8 1 8 1 / test "). send () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 2 0 0 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( MediaType . TEXT , Ġresponse . headers . value ( Headers . CONTENT _ TYPE )) ĊĠĠĠĠĠ Ġval Ġn Ġ= Ġresponse . headers . value ( Headers . CONTENT _ LENGTH )?. toInt () Ġ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 4 , Ġn ) ĊĠĠĠĠĠ ĠAssertions . assertEquals (" Test ", ĠString ( ByteArray ( n ). apply Ġ{ Ġresponse . body . get ( this ) Ġ})) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest L () Ġ{ ĊĠĠĠ Ġserver 2 () ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠGet . url (" https :// localhost : 8 1 8 1 / test 2 "). send () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 2 0 0 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( MediaType . TEXT , Ġresponse . headers . value ( Headers . CONTENT _ TYPE )) ĊĠĠĠĠĠ Ġval Ġn Ġ= Ġresponse . headers . value ( Headers . CONTENT _ LENGTH )?. toInt () Ġ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( BYTES . size , Ġn ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest () Ġ{ ĊĠĠĠ Ġ// server () ĊĠĠĠ Ġrun Blocking Ġ{ Ċ // ĠĠĠĠĠ Ġval Ġresponse Ġ= ĠPost . url (" https :// http bin . org / post "). body (" abc "). send () ĊĠĠĠĠĠ Ġval Ġresponse Ġ= ĠGet . url (" https :// www . google . com / "). send ( false ) Ċ // ĠĠĠĠĠ Ġval Ġresponse Ġ= ĠGet . url (" https :// localhost : 8 1 8 1 / test 2 "). send () ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 2 0 0 , Ġresponse . status ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( MediaType . HTML , Ġresponse . headers . value ( Headers . CONTENT _ TYPE )?. replace ( Regex ("; .* $ "), Ġ"")) ĊĠĠĠĠĠ ĠAssertions . assertEquals (" close ", Ġresponse . headers . value ( Headers . CONNECTION )) ĊĠĠĠĠĠ ĠAssertions . assertTrue ( response . headers . has ( Headers . SERVER )) ĊĠĠĠĠĠ ĠAssertions . assertTrue ( response . headers . has ( Headers . DATE )) ĊĠĠĠĠĠ ĠAssertions . assertTrue ( response . headers . has ( Headers . CONTENT _ LENGTH )) ĊĠĠĠĠĠ Ġval Ġn Ġ= Ġresponse . headers . value ( Headers . CONTENT _ LENGTH )?. toInt () Ġ?: Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( n ) ĊĠĠĠĠĠ Ġresponse . body . get ( bytes ) ĊĠĠĠĠĠ ĠAssertions . assertEquals ( 0 , Ġresponse . body . remaining ()) ĊĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠ Ġval Ġmap Ġ= ĠObjectMapper (). readValue ( bytes , ĠMap :: class . java ) Ġas ĠMap < String , Ġ*> ĊĠĠĠĠĠ ĠAssertions . assertEquals (" abc ", Ġmap [" data "]) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ