package Ġdev . d res . api . rest . handler Ċ Ċ import Ġdev . d res . api . rest . Access Manager Ċ import Ġdev . d res . api . rest . RestApi Role Ċ import Ġdev . d res . api . rest . types . status . Error Status Ċ import Ġdev . d res . api . rest . types . status . Error Status Exception Ċ import Ġdev . d res . data . model . UID Ċ import Ġdev . d res . data . model . run . Run Action Context . Companion . run Action Context Ċ import Ġdev . d res . run .* Ċ import Ġdev . d res . utilities . extensions . UID Ċ import Ġdev . d res . utilities . extensions . sessionId Ċ import Ġio . jav al in . core . security . Route Role Ċ import Ġio . jav al in . http . Context Ċ import Ġio . jav al in . plugin . openapi . annotations . Open Api Ċ import Ġio . jav al in . plugin . openapi . annotations . Open Api Content Ċ import Ġio . jav al in . plugin . openapi . annotations . Open Api Param Ċ import Ġio . jav al in . plugin . openapi . annotations . Open ApiResponse Ċ Ċ abstract Ġclass ĠAbstract Comp etition Run Client Info Handler Ġ: ĠRest Handler , ĠAccess Managed Rest Handler Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġpermitted Roles : ĠSet < Route Role > Ġ= Ġset Of ( RestApi Role . VIEW ER ) ĊĠĠĠ Ġoverride Ġval ĠapiVersion Ġ= Ġ" v 1 " ĊĊĠĠĠ Ġprivate Ġfun ĠuserId ( ctx : ĠContext ): ĠUID Ġ= ĠAccess Manager . getUserId For Session ( ctx . sessionId ()) !! ĊĊĠĠĠ Ġfun Ġis Participant ( ctx : ĠContext ): ĠBoolean Ġ= ĠAccess Manager . roles Of Session ( ctx . sessionId ()). contains ( RestApi Role . P ARTIC IP ANT ) Ġ&& Ġ! Access Manager . roles Of Session ( ctx . sessionId ()). contains ( ĊĠĠĠĠĠĠĠ ĠRest Api Role . ADMIN ) ĊĊĠĠĠ Ġfun Ġget Re levant Managers ( ctx : ĠContext ): ĠList < Run Manager > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= ĠuserId ( ctx ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRun Executor . managers (). filter Ġ{ Ġm Ġ-> Ġm . description . teams . any Ġ{ Ġit . users . contains ( userId ) Ġ} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Run ( ctx : ĠContext , Ġrun Id : ĠUID ): ĠRun Manager ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= ĠuserId ( ctx ) ĊĠĠĠĠĠĠĠ Ġval Ġrun Ġ= ĠRun Executor . manager For Id ( run Id ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( run . description . teams . any Ġ{ Ġit . users . contains ( userId ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrun ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun Id ( ctx : ĠContext ) Ġ= Ġctx . path Param Map (). getOrElse (" run Id ") Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠError Status Exception ( 4 0 0 , Ġ" Parameter Ġ' run Id ' Ġis Ġmissing ! '", Ġctx ) ĊĠĠĠ Ġ}. UID () Ċ } Ċ Ċ data Ġclass ĠClient Run Info ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġdescription : ĠString ?, ĊĠĠĠ Ġval Ġstatus : ĠRun Manager Status Ċ ) Ġ{ ĊĠĠĠ Ġconstructor ( run Manager : ĠRun Manager ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġrun Manager . id . string , ĊĠĠĠĠĠĠĠ Ġrun Manager . name , ĊĠĠĠĠĠĠĠ Ġrun Manager . description . description , ĊĠĠĠĠĠĠĠ Ġrun Manager . status ĊĠĠĠ Ġ) Ċ } Ċ Ċ data Ġclass ĠClient Run InfoList ( val Ġruns Ġ: ĠList < Client Run Info >) Ċ Ċ class ĠList Comp etition Run Client Info Handler Ġ: ĠAbstract Comp etition Run Client Info Handler (), ĠGet Rest Handler < Client Run InfoList > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġroute Ġ= Ġ" client / run / info / list " ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Lists Ġan Ġoverview Ġof Ġall Ġcompetition Ġruns Ġvisible Ġto Ġthe Ġcurrent Ġclient ", ĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ api / v 1 / client / run / info / list ", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" Client ĠRun ĠInfo "], ĊĠĠĠĠĠĠĠ ĠqueryParams Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen Api Param (" session ", ĠString :: class , Ġ" Session ĠToken ", Ġrequired Ġ= Ġtrue , Ġallow Empty Value Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 2 0 0 ", Ġ[ Open Api Content ( Client Run InfoList :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 1 ", Ġ[ Open Api Content ( Error Status :: class )]) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġoverride Ġfun Ġdo Get ( ctx : ĠContext ): ĠClient Run InfoList Ġ= ĊĠĠĠĠĠĠĠ ĠClient Run InfoList ( get Re levant Managers ( ctx ). map Ġ{ ĠClient Run Info ( it ) Ġ}) Ċ Ċ } Ċ Ċ data Ġclass ĠClient Task Info ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġtask Group : ĠString , ĊĠĠĠ Ġval Ġremaining Time : ĠLong , ĊĠĠĠ Ġval Ġrunning : ĠBoolean Ċ ) Ċ Ċ class ĠComp etition Run Client Current Task Info Handler Ġ: ĠAbstract Comp etition Run Client Info Handler (), ĠGet Rest Handler < Client Task Info > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġroute Ġ= Ġ" client / run / info / current Task /{ run Id }" ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Returns Ġan Ġoverview Ġof Ġthe Ġcurrently Ġactive Ġtask Ġfor Ġa Ġrun ", ĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ api / v 1 / client / run / info / current Task /{ run Id }", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" Client ĠRun ĠInfo "], ĊĠĠĠĠĠĠĠ ĠqueryParams Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen Api Param (" session ", ĠString :: class , Ġ" Session ĠToken ", Ġrequired Ġ= Ġtrue , Ġallow Empty Value Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 2 0 0 ", Ġ[ Open Api Content ( Client Task Info :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 1 ", Ġ[ Open Api Content ( Error Status :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 4 ", Ġ[ Open Api Content ( Error Status :: class )]) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġoverride Ġfun Ġdo Get ( ctx : ĠContext ): ĠClient Task Info Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrun Ġ= Ġget Run ( ctx , Ġrun Id ( ctx )) Ġ?: Ġthrow ĠError Status Exception ( 4 0 4 , Ġ" Specified Ġrun Ġnot Ġfound ", Ġctx ) ĊĠĠĠĠĠĠĠ Ġval Ġrac Ġ= Ġrun Action Context ( ctx , Ġrun ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( run Ġ! is ĠInteractive Run Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠError Status Exception ( 4 0 4 , Ġ" Specified Ġrun Ġis Ġnot Ġinteractive ", Ġctx ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġrun . current Task ( rac ) Ġ?: Ġthrow ĠError Status Exception ( 4 0 4 , Ġ" Specified Ġrun Ġhas Ġno Ġactive Ġtask ", Ġctx ) ĊĊĊĠĠĠĠĠĠĠ Ġreturn ĠClient Task Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . uid . string , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description . task Group . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( run . status ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRun Manager Status . CREATED Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRun Manager Status . ACTIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( task . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Run Status . CREATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Run Status . PRE PAR ING Ġ-> Ġtask . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Run Status . RUNNING Ġ-> run . time Left ( rac ) Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Run Status . ENDED Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRun Manager Status . TERMIN ATED Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . isRunning ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ