package Ġinfo . ku ro zer op b . az url ane . controllers Ċ Ċ import Ġinfo . ku ro zer op b . az url ane . API Ċ import Ġinfo . ku ro zer op b . az url ane . Config Ċ import Ġinfo . ku ro zer op b . az url ane . structures . Construction Ċ import Ġinfo . ku ro zer op b . az url ane . structures . Construction Response Ċ import Ġinfo . ku ro zer op b . az url ane . structures . ErrorResponse Ċ import Ġio . jav al in . http . Context Ċ import Ġit . sk rape . core . Method Ċ import Ġit . sk rape . core . Mode Ċ import Ġit . sk rape . extract Ċ import Ġit . sk rape . select s . html Document Ċ import Ġit . sk rape . sk rape Ċ Ċ object ĠCon struction Controller Ġ{ ĊĊĠĠĠ Ġfun Ġget Build Info ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauthorized Ġ= ĠAPI . authorize ( ctx ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! authorized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . status ( 4 0 1 ). json ( ErrorResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġ 4 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Message Ġ= Ġ" Unauthorized ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Invalid Ġauthorization Ġtoken , Ġto Ġget Ġa Ġvalid Ġtoken Ġdon ate Ġto Ġhttps :// pat re on . com / K uro zero " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġctx . query Param (" time ") ĊĠĠĠĠĠĠĠ Ġif Ġ( time . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . status ( 4 0 0 ). json ( ErrorResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġ 4 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Message Ġ= Ġ" Bad ĠRequest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Missing Ġor Ġinvalid Ġtime Ġquery Ġparam " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsc rape Html For Build Info ( time ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . status ( 5 0 0 ). json ( ErrorResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġ 5 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Message Ġ= Ġ" Internal ĠServer ĠError ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" The Ġserver Ġencountered Ġan Ġunexpected Ġcondition Ġthat Ġprevent ed Ġit Ġfrom Ġfulfill ing Ġthe Ġrequest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġe . stack Trace . join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġctx . status ( 2 0 0 ). json ( Construction Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Message Ġ= Ġ" OK ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" The Ġrequest Ġwas Ġsuccessful ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstruction Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsc rape Html For Build Info ( time : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġsk rape Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"${ Config . baseUrl }/ Building " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= ĠMode . DOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= ĠMethod . GET ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfollow Redirect s Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Agent Ġ= ĠConfig . userAgent ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Document Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġget Element ById ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġparent . child ( 0 ). text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġparent . child ( 1 ). child ( 0 ). children () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsh ips Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren . forEach Ġ{ Ġel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh ips . add ( if Ġ( el . child ( 0 ). children (). count () Ġ>= Ġ 3 ) Ġel . child ( 0 ). child ( 2 ). text () Ġelse Ġel . child ( 0 ). child ( 1 ). text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCon struction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwiki Url Ġ= Ġ"${ Config . baseUrl }/ Building ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh ips Ġ= Ġsh ips ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ }