package Ġcom . ml ree f . rest . api . v 1 Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Properties Ċ import Ġcom . ml ree f . rest . api . v 1 . dto . Base Environments Dto Ċ import Ġcom . ml ree f . rest . api . v 1 . dto . Code Project Publishing Dto Ċ import Ġcom . ml ree f . rest . api . v 1 . dto . to Base Environments Dto Ċ import Ġcom . ml ree f . rest . api . v 1 . dto . to Publishing Pipeline Dto Ċ import Ġcom . ml ree f . rest . config . DEFAULT _ PAGE _ SIZE Ċ import Ġcom . ml ree f . rest . domain . Access Level Ċ import Ġcom . ml ree f . rest . domain . Publishing Machine Type Ċ import Ġcom . ml ree f . rest . exceptions . BadRequest Exception Ċ import Ġcom . ml ree f . rest . exceptions . NotFoundException Ċ import Ġcom . ml ree f . rest . external _ api . gitlab . Token Details Ċ import Ġcom . ml ree f . rest . feature . Publishing Service Ċ import Ġorg . springframework . data . domain . Page Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . data . web . Page able Default Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . security . access . pre post . Pre Authorize Ċ import Ġorg . springframework . web . bind . annotation . Delete Mapping Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestBody Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . Request Method Ċ import Ġorg . springframework . web . bind . annotation . RequestParam Ċ import Ġorg . springframework . web . bind . annotation . ResponseStatus Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġjava . time . Instant Ċ import Ġjava . util . UUID Ċ Ċ @ RestController Ċ @ RequestMapping ("/ api / v 1 / code - projects /") Ċ internal Ġclass ĠCode Project Publishing Controller ( ĊĠĠĠ Ġprivate Ġval Ġpublishing Service : ĠPublish ing Service Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ GetMapping (" environments ") ĊĠĠĠ Ġfun Ġget Environments List (): ĠList < Base Environments Dto > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpublishing Service . getBase Environments List (). map Ġ{ Ġit . to Base Environments Dto () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping (" environments ") ĊĠĠĠ Ġ@ Pre Authorize (" is Git lab Admin () ") ĊĠĠĠ Ġfun Ġcreate Environment ( ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġrequest : ĠCreate Environment Request ĊĠĠĠ Ġ): ĠBase Environments Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpublishing Service . create Base Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . docker Image , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . requirements , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . machine Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . sdk Version ĊĠĠĠĠĠĠĠ Ġ). to Base Environments Dto () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Delete Mapping (" environments /{ env Id }") ĊĠĠĠ Ġ@ ResponseStatus ( HttpStatus . NO _ CONTENT ) ĊĠĠĠ Ġ@ Pre Authorize (" is Git lab Admin () ") ĊĠĠĠ Ġfun Ġdelete Environment ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġenv Id : ĠUUID , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpublishing Service . delete Base Environment ( env Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("{ id }/ publish ") ĊĠĠĠ Ġ@ ResponseStatus ( HttpStatus . OK ) ĊĠĠĠ Ġ@ Pre Authorize (" has Access To Project (# id , Ġ' DE VELO PER ') ") ĊĠĠĠ Ġfun Ġpublish Existing Project ( ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġrequest : ĠPublish ing Request , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠCode Project Publishing Dto Ġ= ĊĠĠĠĠĠĠĠ Ġpublishing Service . start Publishing ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain FilePath Ġ= Ġrequest . path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequirements FilePath Ġ= Ġrequest . requirements File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Id Ġ= Ġrequest . environment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Type Ġ= Ġrequest . model Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġml Category Ġ= Ġrequest . ml Category , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher Subject Id Ġ= Ġtoken . accountId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Token Ġ= Ġtoken . accessToken , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ= Ġrequest . branch , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġrequest . version , ĊĠĠĠĠĠĠĠ Ġ). to Publishing Pipeline Dto () ĊĊĠĠĠ Ġ@ GetMapping ("{ id }/ publish /{ processor Id }") ĊĠĠĠ Ġ@ Pre Authorize (" can View Project (# id )") ĊĠĠĠ Ġfun Ġget Publish Info ById ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġprocessor Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠCode Project Publishing Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpublishing Service . get Publishing Info ById ( id , Ġprocessor Id ). to Publishing Pipeline Dto () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("{ id }/ publish /{ branch }/{ version }") ĊĠĠĠ Ġ@ Pre Authorize (" can View Project (# id )") ĊĠĠĠ Ġfun Ġget Publish Info By Branch And Version ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġbranch : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġversion : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠCode Project Publishing Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpublishing Service . get Publishing Info ( id , Ġbranch , Ġversion ). first OrNull ()?. to Publishing Pipeline Dto () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNotFound Exception (" Publication Ġnot Ġfound Ġfor Ġproject Ġ$ id , Ġbranch Ġ$ branch Ġand Ġversion Ġ$ version ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("{ id }/ publish ") ĊĠĠĠ Ġ@ Pre Authorize (" can View Project (# id )") ĊĠĠĠ Ġfun Ġget Publish Info ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġbranch : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġversion : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ@ Page able Default ( size Ġ= ĠDEFAULT _ PAGE _ SIZE ) Ġpage able : ĠPage able , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠPage < Code Project Publishing Dto > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpublishing Service . get Publishing Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage able ĊĠĠĠĠĠĠĠ Ġ) Ġas ĠPage ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult . map Ġ{ Ġit . to Publishing Pipeline Dto () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("{ id }/ publish / latest ") ĊĠĠĠ Ġ@ Pre Authorize (" can View Project (# id )") ĊĠĠĠ Ġfun Ġget Latest Publish Info ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġbranch : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġversion : ĠString ?, ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠCode Project Publishing Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpublishing Service . get Publishing Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult . sorted By Descending Ġ{ Ġit . job Finished At Ġ?: Ġit . job Started At Ġ?: Ġit . published At Ġ?: ĠInstant . now () Ġ}. first OrNull ()?. to Publishing Pipeline Dto () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNotFound Exception (" No Ġlatest Ġpublication Ġfor Ġproject Ġ$ id ${ branch ?. let Ġ{ Ġ", Ġbranch Ġ$ it " Ġ}} ${ version ?. let Ġ{ Ġ" Ġand Ġversion Ġ$ it " Ġ}} Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ( value Ġ= Ġ[" { id }/{ branch }/{ version }/ un publish "], Ġmethod Ġ= Ġ[ Request Method . POST , ĠRequestMethod . DELETE ]) ĊĠĠĠ Ġ@ ResponseStatus ( HttpStatus . OK ) ĊĠĠĠ Ġ@ Pre Authorize (" has Access To Project (# id , Ġ' DE VELO PER ') ") ĊĠĠĠ Ġfun Ġun publish Existing Project ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġbranch : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġversion : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠCode Project Publishing Dto Ġ= Ġpublishing Service . un Publish Processor ( ĊĠĠĠĠĠĠĠ Ġuser Token Ġ= Ġtoken . accessToken , ĊĠĠĠĠĠĠĠ ĠprojectId Ġ= Ġid , ĊĠĠĠĠĠĠĠ Ġbranch Ġ= Ġbranch , ĊĠĠĠĠĠĠĠ Ġversion Ġ= Ġversion , ĊĠĠĠĠĠĠĠ Ġun publisher Subject Id Ġ= Ġtoken . accountId , ĊĠĠĠĠĠĠĠ Ġis Project Owner Ġ= Ġtoken . projects . get ( id ) Ġ== ĠAccess Level . OWNER , ĊĠĠĠ Ġ). to Publishing Pipeline Dto () ĊĊĊĠĠĠ Ġ@ PostMapping ("{ id }/ re publish ") ĊĠĠĠ Ġ@ ResponseStatus ( HttpStatus . OK ) ĊĠĠĠ Ġ@ Pre Authorize (" has Access To Project (# id , Ġ' DE VELO PER ') ") ĊĠĠĠ Ġfun Ġre publish Existing Project ( ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġrequest : ĠPublish ing Request , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken Details ĊĠĠĠ Ġ): ĠCode Project Publishing Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpublishing Service . re publish Processor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Token Ġ= Ġtoken . accessToken , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ= Ġrequest . branch Ġ?: Ġthrow ĠBadRequest Exception (" Branch Ġis Ġmandatory Ġfor Ġre publish "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġrequest . version Ġ?: Ġthrow ĠBadRequest Exception (" Version Ġis Ġmandatory Ġfor Ġre publish "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain FilePath Ġ= Ġrequest . path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequirements FilePath Ġ= Ġrequest . requirements File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Id Ġ= Ġrequest . environment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre publisher Subject Id Ġ= Ġtoken . accountId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Project Owner Ġ= Ġtoken . projects . get ( id ) Ġ== ĠAccess Level . OWNER , ĊĠĠĠĠĠĠĠ Ġ). to Publishing Pipeline Dto () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ class ĠPublish ing Request ( ĊĠĠĠ Ġval Ġslug : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġpath : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġrequirements File : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġenvironment : ĠUUID ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġbranch : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġversion : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmodel Type : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġml Category : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġaccepted Publishing Terms : ĠInstant ? Ġ= Ġnull Ċ ) Ċ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ class ĠCreate Environment Request ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġdocker Image : ĠString , ĊĠĠĠ Ġval Ġdescription : ĠString ?, ĊĠĠĠ Ġval Ġrequirements : ĠString ?, ĊĠĠĠ Ġval Ġmachine Type : ĠPublish ing Machine Type ?, ĊĠĠĠ Ġval Ġsdk Version : ĠString ? Ċ ) ĊĊ