package Ġcom . api . project . controller Ċ Ċ import Ġcom . api . project . models . Docker Model Ċ import Ġcom . api . project . service . docker . Docker Service Ċ import Ġcom . nim bus ds . j ose . sh aded . json . JSONArray Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . security . access . pre post . Pre Authorize Ċ import Ġorg . springframework . web . bind . annotation .* Ċ Ċ @ RestController Ċ @ RequestMapping ("/ containers ") Ċ class ĠDocker Controller ( val Ġdocker Service : ĠDocker Service ) Ġ{ ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . GET ], Ġvalue Ġ= Ġ["/ ping "]) ĊĠĠĠ Ġfun Ġget Ping (): ĠResponseEntity < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġdocker Service . get Ping Docker API () ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" OK ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . GET ], Ġvalue Ġ= Ġ["/ list "]) ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' MOD ') Ġor Ġhas Role (' ADMIN ') ") ĊĠĠĠ Ġfun ĠgetList Containers (): ĠResponseEntity < JSONArray > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocker Service . getList Containers (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . PUT ], Ġvalue Ġ= Ġ["/ create "]) ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' ADMIN ') ") ĊĠĠĠ Ġfun Ġcreate Container (@ RequestBody Ġimage Name : ĠString ): ĠResponseEntity < Docker Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocker Service . create Container ( image Name ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . POST ], Ġvalue Ġ= Ġ["/ start /{ name }" ]) ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' MOD ') Ġor Ġhas Role (' ADMIN ') ") ĊĠĠĠ Ġfun Ġstart Container (@ PathVariable (" name ") Ġname : ĠString ): ĠResponseEntity < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġdocker Service . start Container ( name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Start ĠContainer Ġ$ name ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . POST ], Ġvalue Ġ= Ġ["/ stop /{ name }" ]) ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' MOD ') Ġor Ġhas Role (' ADMIN ') ") ĊĠĠĠ Ġfun Ġstop Container (@ PathVariable (" name ") Ġname : ĠString ): ĠResponseEntity < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġdocker Service . stop Container ( name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Stop ĠContainer Ġ$ name ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . POST ], Ġvalue Ġ= Ġ["/ restart /{ name }" ]) ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' MOD ') Ġor Ġhas Role (' ADMIN ') ") ĊĠĠĠ Ġfun Ġrestart Container (@ PathVariable (" name ") Ġname : ĠString ): ĠResponseEntity < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġdocker Service . restart Container ( name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Restart ĠContainer Ġ$ name ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( method Ġ= Ġ[ Request Method . POST ], Ġvalue Ġ= Ġ["/ rename /{ name }/{ new Name }" ]) ĊĠĠĠ Ġ@ Pre Authorize (" has Role (' ADMIN ') ") ĊĠĠĠ Ġfun Ġrename Container ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" name ") Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" new Name ") ĠnewName : ĠString ĊĠĠĠ Ġ): ĠResponseEntity < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġdocker Service . restart Container ( name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Rename ĠContainer Ġ$ name Ġ$ new Name ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }