/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ċ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ċ Ġ* Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ċ Ġ* Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ċ Ġ* Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN Ċ Ġ* ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , Ċ Ġ* ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE Ċ Ġ* ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tencent . devops . stream . service Ċ Ċ import Ġcom . tencent . devops . common . api . exception . Custom Exception Ċ import Ġcom . tencent . devops . common . api . pojo . Result Ċ import Ġcom . tencent . devops . process . yaml . v 2 . utils . Script Y ml Utils Ċ import Ġcom . tencent . devops . stream . dao . Git Request Event Build Dao Ċ import Ġcom . tencent . devops . stream . dao . Stream Basic Setting Dao Ċ import Ġcom . tencent . devops . stream . pojo . Stream Git Yaml String Ċ import Ġcom . tencent . devops . stream . pojo . V 2 Build Yaml Ċ import Ġcom . tencent . devops . stream . trigger . parsers . yaml Check . Yaml Schema Check Ċ import Ġorg . jooq . DSL Context Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjavax . ws . rs . core . Response Ċ Ċ @ Service Ċ class ĠStream Yaml Service Ġ@ Autowired Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġd sl Context : ĠDSL Context , ĊĠĠĠ Ġprivate Ġval Ġstream Setting Dao : ĠStream Basic Setting Dao , ĊĠĠĠ Ġprivate Ġval Ġgit Request Event Build Dao : ĠGit Request Event Build Dao , ĊĠĠĠ Ġprivate Ġval Ġyaml Schema Check : ĠYaml Schema Check Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Stream Yaml Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Yaml V 2 ( git ProjectId : ĠLong , Ġbuild Id : ĠString ): ĠV 2 Build Yaml ? Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" get Ġyaml Ġby Ġbuild Id : ($ build Id ), Ġgit ProjectId : Ġ$ git ProjectId ") ĊĠĠĠĠĠĠĠ Ġstream Setting Dao . get Setting ( dsl Context , Ġgit ProjectId ) Ġ?: Ġthrow ĠCustom Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Status . FOR BID DEN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" é¡¹çĽ® æľª å¼ĢåĲ¯ Stream ï¼Į æĹłæ³ķ æŁ¥è¯¢ " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġevent Build Ġ= Ġgit Request Event Build Dao . getBy Build Id ( dsl Context , Ġbuild Id ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ// Ġ éĴĪå¯¹ V 2 çīĪæľ¬ åģļ æĽ¿æį¢ ĊĠĠĠĠĠĠĠ Ġval Ġparsed Ġ= Ġevent Build . parsed Yaml . replace First (" trigger On :", Ġ" on :") ĊĠĠĠĠĠĠĠ Ġreturn ĠV 2 Build Yaml ( parsed Yaml Ġ= Ġparsed , Ġorigin Yaml Ġ= Ġevent Build . origin Yaml ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Yaml ( userId : ĠString , Ġyaml : ĠStream Git Yaml String ): ĠResult < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġæ£Ģ æŁ¥ yml çīĪæľ¬ ï¼Į æł¹æį® yml çīĪæľ¬ éĢīæĭ© ä¸įåĲĮçļĦ å®ŀçİ° ĊĠĠĠĠĠĠĠ Ġval Ġy ml Version Ġ= ĠScript Y ml Utils . parse Version ( yaml . yaml ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy ml Version Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ( 1 , Ġ" Invalid Ġyaml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyaml Schema Check . check ( yaml . yaml , Ġnull , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult (" OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Check Ġyaml Ġschema Ġfailed .", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ( 1 , Ġ" Invalid Ġyaml : Ġ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ