package Ġio . ipfs . kotlin . http 4 k Ċ Ċ import Ġkotlin . system . exit Process Ċ import Ġio . ipfs . kotlin . defaults .* Ċ import Ġio . ipfs . kotlin . url .* Ċ import Ġio . ipfs . kotlin .* Ċ Ċ import Ġjava . io . File Ċ import Ġjava . util . Stack Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . Format Style Ċ Ċ import Ġorg . http 4 k . client . Apache Client Ċ import Ġorg . http 4 k . client . Java HttpClient Ċ import Ġorg . http 4 k . client . Ok Http Ċ import Ġorg . http 4 k . core . Body Ċ import Ġorg . http 4 k . core . ContentType Ċ import Ġorg . http 4 k . core . Filter Ċ import Ġorg . http 4 k . core . Http Handler Ċ import Ġorg . http 4 k . core . Method Ċ import Ġorg . http 4 k . core . Method . DELETE Ċ import Ġorg . http 4 k . core . Method . GET Ċ import Ġorg . http 4 k . core . Method . POST Ċ import Ġorg . http 4 k . core . Multipart Form Body Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Response Ċ import Ġorg . http 4 k . core . Status Ċ import Ġorg . http 4 k . core . Status . Companion . OK Ċ import Ġorg . http 4 k . core . body . form Ċ import Ġorg . http 4 k . core . getFirst Ċ import Ġorg . http 4 k . core . then Ċ import Ġorg . http 4 k . core . to Parameters Map Ċ import Ġorg . http 4 k . core . with Ċ import Ġorg . http 4 k . filter . Caching Filters Ċ import Ġorg . http 4 k . filter . Debugging Filters . Print Request And Response Ċ import Ġorg . http 4 k . filter . Server Filters Ċ import Ġorg . http 4 k . ham k rest . has Status Ċ import Ġorg . http 4 k . lens . FormField Ċ import Ġorg . http 4 k . lens . Header Ċ import Ġorg . http 4 k . lens . Lens Failure Ċ import Ġorg . http 4 k . lens . Multipart Form Ċ import Ġorg . http 4 k . lens . Multipart FormField Ċ import Ġorg . http 4 k . lens . Multipart Form File Ċ import Ġorg . http 4 k . lens . Validator Ċ import Ġorg . http 4 k . lens . Web Form Ċ import Ġorg . http 4 k . lens . int Ċ import Ġorg . http 4 k . lens . multipart Form Ċ import Ġorg . http 4 k . lens . web Form Ċ import Ġorg . http 4 k . routing . Resource Loader . Companion . Classpath Ċ import Ġorg . http 4 k . routing . bind Ċ import Ġorg . http 4 k . routing . path Ċ import Ġorg . http 4 k . routing . routes Ċ import Ġorg . http 4 k . routing . single Page App Ċ import Ġorg . http 4 k . routing . static Ċ import Ġorg . http 4 k . server . Http 4 k Server Ċ import Ġorg . http 4 k . server . Jet ty Ċ import Ġorg . http 4 k . server . Sun Http Ċ import Ġorg . http 4 k . server . as Server Ċ Ċ fun Ġhttp 4 k Client As A Function Ġ() Ġ{ ĊĠĠĠ Ġval Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () ĊĠĠĠ Ġentering ( here , Ġcaller ) ĊĊĠĠĠ Ġ// Ġ-- args ="- http 4 k Ġclient Ġfunc " ĊĠĠĠĠĊĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( Method . GET , Ġ" https :// xk cd . com / info . 0 . json ") ĊĠĠĠ Ġval Ġclient : ĠHttp Handler Ġ= ĠJava HttpClient () ĊĊĠĠĠ Ġprintln ("$ here : Ġresponse Ġ---- --> ") ĊĠĠĠ Ġval Ġresponse Ġ= Ġclient ( request ) ĊĠĠĠ Ġprintln ( response ) ĊĠĠĠ Ġprintln ("$ here : Ġ< ------ Ġend Ġof Ġresponse ") ĊĠĠĠ Ġexiting ( here ) Ċ } Ċ Ċ fun Ġhttp 4 k Client Get Of Uri Ġ( uri : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () ĊĠĠĠ Ġentering ( here , Ġcaller ) ĊĠĠĠĠĊĠĠĠ Ġ// ĠEx .: Ġ- http 4 k Ġclient Ġget Ġhttp :// 8 2 . 6 7 . 1 3 7 . 5 4 / js / json / files / test . json " ĊĊĠĠĠ Ġif ( is Trace ( here )) Ġprintln Ġ(" $ here : Ġinput Ġuri Ġ'$ uri '") ĊĊĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( Method . GET , Ġuri ) ĊĠĠĠ Ġval Ġclient : ĠHttp Handler Ġ= ĠJava HttpClient () ĊĊĠĠĠ Ġprintln ("$ here : Ġresponse Ġ---- --> ") ĊĠĠĠ Ġval Ġresponse Ġ= Ġclient ( request ) ĊĠĠĠ Ġprintln ( response ) ĊĠĠĠ Ġprintln ("$ here : Ġ< ------ Ġend Ġof Ġresponse ") ĊĊĠĠĠ Ġexiting ( here ) Ċ } Ċ Ċ fun Ġhttp 4 k ClientResponse Ġ() Ġ{ ĊĠĠĠ Ġval Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () ĊĠĠĠ Ġentering ( here , Ġcaller ) ĊĊĠĠĠ Ġ// ĠEx .: Ġ- http 4 k Ġclient Ġresponse ĊĠĠĠ Ġ// ĠHTTP Ġclients Ġare Ġalso ĠHttp Handlers ! ĊĠĠĠĠĊĠĠĠ Ġval Ġclient : ĠHttp Handler Ġ= ĠOk Http () ĊĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( GET , Ġ" http :// localhost : 9 0 0 0 / gre et / Bob ") ĊĊĠĠĠ Ġif ( is Verbose ( here )){ Ċ ĉ println ("$ here : Ġrequest Ġstarts Ġhere ") Ċ ĉ println ( request ) Ċ ĉ println ("$ here : Ġrequest Ġends Ġhere ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġresponse : ĠResponse Ġ= Ġclient ( request ) ĊĊĠĠĠ Ġif ( is Verbose ( here )){ Ċ ĉ println ("$ here : Ġresponse Ġstarts Ġhere ") Ċ ĉ println ( response ) Ċ ĉ println ("$ here : Ġresponse Ġends Ġhere ") ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġval Ġstatus Ġ= Ġresponse . status ĊĠĠĠ Ġif ( is Verbose ( here )) println ("$ here : Ġresponse Ġstatus Ġ$ status ") ĊĠĠĠ Ġif Ġ(! Ġstatus . successful ) Ġ{ Ċ ĉ val Ġdescription Ġ= Ġstatus . description Ċ ĉ val Ġcode Ġ= Ġstatus . code Ċ ĉ when ( code ) Ġ{ ĊĉĠĠĠĠ 5 0 3 Ġ-> Ċĉ ĉ fatal Error Print (" server Ġwere Ġstarted Ġ", description ," Ġrun Ġfor Ġexample Ġ: Ġ- http 4 k Ġserver Ġjet ty Ġstart ", Ġhere ) ĊĉĠĠĠ Ġelse Ġ-> Ċĉ ĉ fatal Error Print (" Response Ġwere Ġsuccessful Ġ", description ," Check ", Ġhere ) Ċ ĉ } ĊĠĠĠ Ġ} Ċ // ĠPro duces : Ċ // ĠĠĠ ĠRequest Ġto Ġ/ api / gre et / Bob Ġtook Ġ 1 ms Ċ // ĠĠĠ ĠHTTP / 1 . 1 Ġ 2 0 0 Ċ // ĠĠĠ Ġcache - control : Ġprivate , Ġmust - re validate Ċ // ĠĠĠ Ġcontent - length : Ġ 9 Ċ // ĠĠĠ Ġdate : ĠThu , Ġ 0 8 ĠJun Ġ 2 0 1 7 Ġ 1 3 : 0 1 : 1 3 ĠGMT Ċ // ĠĠĠ Ġexpires : Ġ 0 Ċ // ĠĠĠ Ġserver : ĠJet ty ( 9 . 3 . 1 6 . v 2 0 1 7 0 1 2 0 ) Ċ // Ċ // ĠĠĠ Ġhello ĠBob ĊĠĊĠĠĠ Ġexiting ( here ) Ċ } Ċ Ċ fun Ġmenu Http 4 k Client Of Word Stack ( wor _ s : ĠStack < String >) Ġ{ ĊĠĠĠ Ġval Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () ĊĠĠĠ Ġentering ( here , Ġcaller ) ĊĊĠĠĠ Ġif ( is Trace ( here )) Ġprintln Ġ(" $ here : Ġinput Ġwor _ s Ġ'$ wor _ s '") ĊĊĠĠĠ Ġ// ĠEx .: Ġ- http 4 k Ġclient Ġfunction ĊĠĠĠ Ġ// ĠEx .: Ġ- http 4 k Ġclient Ġget Ġhttp :// 8 2 . 6 7 . 1 3 7 . 5 4 / js / json / files / test . json ĊĠĠĠĠĊĠĠĠ Ġtry Ġ{ ĊĠ ĉ val Ġwor Ġ= Ġwor _ s . pop () Ċ ĉ val Ġwor _ 3 Ġ= Ġthree First Characters Of String Of Caller ( wor , Ġhere ) Ċ ĉ if ( is Loop ( here )) Ġprintln ("$ here : Ġwhile Ġwor Ġ'$ wor '") ĊĉĊ ĉ when Ġ( wor _ 3 ) Ġ{ ĊĉĠĠĠ Ġ" fun " Ġ-> Ġ{ http 4 k Client As A Function ()} ĊĉĠĠĠ Ġ" get " Ġ-> Ġ{ Ċĉ ĉ val Ġuri Ġ= Ġwor _ s . pop () Ċĉ ĉ http 4 k Client Get Of Uri ( uri ) ĊĉĠĠĠ Ġ} ĊĉĠĠĠ Ġ" res " Ġ-> Ġ{ http 4 k ClientResponse ()} ĊĉĠĠĠ Ġelse Ġ-> Ġ{ Ċĉ ĉ fatal Error Print Ġ(" command Ġwere Ġ' fun ' ction Ġor Ġ' get ' Ġor 're s ' ponse "," '$ wor '", Ġ" Check Ġinput ", Ġhere ) ĊĉĠĠĠ Ġ} Ġ// Ġelse Ċ ĉ } Ġ// Ġwhen Ġ( wor _ 3 ) ĊĠĠĠ Ġ} Ġ// Ġtry ĊĠĠĠ Ġcatch Ġ( e : Ġjava . util . Empty Stack Exception ) Ġ{ Ċ ĉ fatal Error Print Ġ(" command Ġwere Ġ- http 4 k Ġclient Ġ' fun ' ction Ġor Ġ' get ' Ġor Ġ' res ' ponse "," no Ġarguments ", Ġ" Complete Ġinput ", Ġhere ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġexiting ( here ) Ċ } Ċ Ċ fun Ġmenu Http 4 k Client Url Get Of Word Stack ( wor _ s : ĠStack < String >) Ġ{ ĊĠĠĠ Ġval Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () ĊĠĠĠ Ġentering ( here , Ġcaller ) ĊĊĠĠĠ Ġ// ĠSame Ġas Ġhttp 4 k ClientResponse ĊĠĠĠ Ġ// ĠNeeds Ġto Ġlaunch Ġserver Ġfirst Ġ( with Ġ- http 4 k Ġserver Ġjet ty Ġfull ) ĊĠĠĠ Ġ// ĠEx .: Ġ- http 4 k Ġget Ġport Ġ 9 0 0 0 Ġhost Ġlocalhost Ġroute Ġ/ gre et / J ules ĊĊĠĠĠ Ġif ( is Trace ( here )) Ġprintln Ġ(" $ here : Ġinput Ġwor _ s Ġ'$ wor _ s '") ĊĠĠĠ Ġif Ġ( wor _ s . isEmpty ()){ Ċ ĉ fatal Error Print Ġ(" command Ġwere Ġ- http 4 k Ġget Ġ' hos 't Ġor Ġ' por 't Ġor Ġ' ro u 't e Ġ"," no Ġget Ġarguments ", Ġ" Check Ġinput ", Ġhere ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠLocal Ġvariables Ġ*/ ĊĠĠĠ Ġvar Ġh os Str Ġ= "" ĊĠĠĠ Ġvar Ġpor Str Ġ= "" ĊĠĠĠ Ġvar Ġro u Str Ġ= "" ĊĠĠĠĠĊĠĠĠ Ġvar Ġdone Ġ= Ġfalse ĊĠĠĠ Ġwhile Ġ(! done ) Ġ{ Ċ ĉ try Ġ{ ĊĠ ĉĠĠĠ Ġval Ġwor Ġ= Ġwor _ s . pop () ĊĉĠĠĠ Ġval Ġwor _ 3 Ġ= Ġthree First Characters Of String Of Caller ( wor , Ġhere ) ĊĉĠĠĠ Ġif ( is Loop ( here )) Ġprintln ("$ here : Ġwhile Ġwor Ġ'$ wor '") ĊĉĠĠĠĠĊĉĠĠĠ Ġwhen Ġ( wor _ 3 ) Ġ{ Ċĉ ĉ " hel " Ġ-> Ġ{ ĊĉĉĠĠĠ Ġprint Help Of String (" get Ġ") Ċĉ ĉ } Ċĉ ĉ " hos " Ġ-> Ġ{ ĊĉĉĠĠĠ Ġh os Str Ġ= Ġwor _ s . pop () Ċĉ ĉ } Ċĉ ĉ " por " Ġ-> Ġ{ ĊĉĉĠĠĠ Ġpor Str Ġ= Ġwor _ s . pop () Ċĉ ĉ } Ċĉ ĉ " ro u " Ġ-> Ġ{ ĊĉĉĠĠĠ Ġro u Str Ġ= Ġwor _ s . pop () ĊĉĉĠĠĠ Ġprintln ("$ here : Ġwhen Ġpor Str Ġ'$ por Str '") ĊĉĉĠĠĠ Ġprintln ("$ here : Ġwhen Ġh os Str Ġ'$ hos Str '") ĊĉĉĠĠĠ Ġprintln ("$ here : Ġwhen Ġro u Str Ġ'$ ro u Str '") Ċĉ ĉ } Ċĉ ĉ else Ġ-> Ġ{ ĊĉĉĠĠĠ Ġfatal Error Print Ġ(" command Ġwere Ġ' hos 't Ġor Ġ' por 't Ġor Ġ' ro u 't e Ġ"," '$ wor '", Ġ" Check Ġinput ", Ġhere ) Ċĉ ĉ } Ġ// Ġelse ĊĉĠĠĠ Ġ} Ġ// Ġwhen Ġ( wor _ 3 ) Ċ ĉ } Ġ// Ġtry Ċ ĉ catch Ġ( e : Ġjava . util . Empty Stack Exception ) Ġ{ done Ġ= Ġtrue } Ġ// Ġcatch ĊĉĊĠĠĠ Ġ} Ġ// Ġwhile ĊĊĠĠĠ Ġ// ĠHTTP Ġclients Ġare Ġalso ĠHttp Handlers ! ĊĠĠĠ Ġval Ġclient : ĠHttp Handler Ġ= ĠOk Http () ĊĊĠĠĠ Ġprintln ("$ here : Ġclient ĠOk Http Ġstarted ") ĊĠĠĠ Ġprintln (" client ") ĊĊĠĠĠ Ġval Ġuri Ġ= Ġ" http ://" Ġ+ Ġh os Str Ġ+ Ġ":" Ġ+ Ġpor Str Ġ+ Ġro u Str ĠĊĊĠĠĠ Ġif ( isDebug ( here )) Ġprintln Ġ(" $ here : Ġuri Ġ'$ uri '") ĊĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( GET , Ġuri ) ĊĠĠĠ Ġval Ġresponse : ĠResponse Ġ= Ġclient ( request ) ĊĊĠĠĠ Ġprintln ("$ here : Ġresponse ") ĊĠĠĠ Ġprintln ( response ) ĊĊĠĠĠ Ġval Ġpattern Ġ= ĠRegex (" Client ĠError : ĠConnection ĠRef used ") ĊĠĠĠ Ġif ( pattern . contains Match In ( response . toString ())){ Ċ ĉ fatal Error Print (" server Ġwere Ġstarted "," it Ġis Ġnot "," run Ġfor Ġexample Ġ: Ġ- http 4 k Ġserver Ġjet ty Ġstart ", Ġhere ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġexiting ( here ) Ċ } ĊĊĊ