/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠPeter ĠW u Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcn . best wu . gd ph . search Ċ Ċ import Ġcn . best wu . gd ph . show Ċ import Ġcom . intellij . notification . Notification Listener Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġgro ovy . json . Json Sl ur per Ċ import Ġjava . io . InputStream Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠPeter ĠW u Ċ Ġ* Ġ@ since Ċ Ġ*/ Ċ val Ġregex Ġ= ĠRegex ("\\ {\" id \":\" (.* ?): (.* ?): (.* ? )\ ", ") Ċ Ċ fun Ġget Connection ( spec : ĠString , Ġrequest Properties : ĠMap < String , ĠList < String >> Ġ= Ġmap Of ()): ĠHttp URLConnection Ġ{ ĊĠĠĠ Ġval Ġurl Ġ= ĠURL ( spec ) ĊĠĠĠ Ġval Ġhttp URLConnection Ġ= Ġurl . open Connection () Ġas ĠHttp URLConnection ĊĠĠĠ Ġhttp URLConnection . connect Timeout Ġ= Ġ 4 0 0 0 ĊĠĠĠ Ġhttp URLConnection . read Timeout Ġ= Ġ 4 0 0 0 ĊĠĠĠ Ġrequest Properties . forEach Ġ{ Ġ( t , Ġu ) Ġ-> ĊĠĠĠĠĠĠĠ Ġu . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp URLConnection . add Request Property ( t , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġhttp URLConnection Ċ } Ċ Ċ private Ġfun Ġget Response ( connection : ĠHttp URLConnection , Ġproject : ĠProject ): ĠInputStream ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( connection . response Code Ġ!= Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Text Ġ= Ġ( connection . error Stream ?. buffered Reader ()?. read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġconnection . inputStream . buffered Reader (). read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( connection . response Code Ġ!= Ġ 4 0 4 Ġ&& Ġ( connection . response Code Ġ!= Ġ 4 0 0 Ġ|| Ġ! responseText . contains (" This ĠREST ĠAPI Ġis Ġavailable Ġonly Ġin ĠArt ifactory ĠPro "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( project , Ġ" response :$ responseText .", Ġ" No Ġdependencies Ġfound ", ĠNotification Type . WARNING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconnection . inputStream ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġconnection . url . toString () ĊĠĠĠĠĠĠĠ Ġshow ( project , Ġ"< a Ġhref ='$ url '> $ url </ a >", Ġ" Request Ġtimeout ", ĠNotification Type . WARNING , ĠNotification Listener . URL _ OPEN ING _ LIST ENER ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġget Response Text ( connection : ĠHttp URLConnection , Ġproject : ĠProject ): ĠString ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġget Response ( connection , Ġproject ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġstream . buffered Reader (). read Text () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġconnection . url . toString () ĊĠĠĠĠĠĠĠ Ġshow ( project , Ġ"< a Ġhref ='$ url '> $ url </ a >", Ġ" Request Ġtimeout ", ĠNotification Type . WARNING , ĠNotification Listener . URL _ OPEN ING _ LIST ENER ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġget Response Json ( connection : ĠHttp URLConnection , Ġproject : ĠProject ): ĠAny ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġget Response ( connection , Ġproject ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Sl ur per (). parse ( stream ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġconnection . url . toString () ĊĠĠĠĠĠĠĠ Ġshow ( project , Ġ"< a Ġhref ='$ url '> $ url </ a >", Ġ" Request Ġtimeout ", ĠNotification Type . WARNING , ĠNotification Listener . URL _ OPEN ING _ LIST ENER ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ internal Ġfun Ġget Ali Repos (): ĠList < String > Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġget Connection (" https :// maven . aliyun . com / repo / list ? _ input _ charset = utf - 8 ") ĊĠĠĠĠĠĠĠ Ġif Ġ( connection . response Code Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġconnection . inputStream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Result Ġ= ĠJson Sl ur per (). parse ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠĠ Ġ(( json Result Ġas ĠMap < *, Ġ* >) [" object "] Ġas ĠList < Map < *, Ġ* >> ). map Ġ{ Ġit [" repo Id "]. toString () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġempty List () Ċ } ĊĊ Ċ internal Ġval Ġversion T ails Ġ= ĠarrayOf (" SNAPSHOT S ", Ġ" ALPHA ", Ġ" B ETA ", Ġ" M ", Ġ" RC ", Ġ" RELEASE ") Ċ internal Ġval Ġversion Tail Regex Ġ= Ġ"^ ([ A - Za - z ]+ ? )( \\ d *) $ ". to Regex () Ċ Ċ /** Ċ Ġ* Ġæ¯ Ķ è¾ĥ çīĪæľ¬ ä¿¡æģ¯ ĊĊ Ġ* Ġ@ param Ġversion 1 Ġ çīĪæľ¬ 1 Ċ Ġ* Ġ* Ċ Ġ* Ġ@ param Ġversion 2 Ġ çīĪæľ¬ 2 Ċ Ġ* Ġ* Ċ Ġ* Ġ@ return Ġint Ċ Ġ*/ Ċ fun Ġcompare Version ( version 1 : ĠString , Ġversion 2 : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( version 1 Ġ== Ġversion 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġseparator Ġ= Ġ"[ .- ]" ĊĠĠĠ Ġval Ġversion 1 s Ġ= Ġversion 1 . split ( separator . to Regex ()). to Mutable List () ĊĠĠĠ Ġval Ġversion 2 s Ġ= Ġversion 2 . split ( separator . to Regex ()). to Mutable List () ĊĊĠĠĠ Ġif Ġ( version 1 s . size Ġ< Ġversion 2 s . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġversion 1 s . addAll ( List ( version 2 s . size Ġ- Ġversion 1 s . size ) Ġ{ Ġ"" Ġ}) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġversion 2 s . addAll ( List ( version 1 s . size Ġ- Ġversion 2 s . size ) Ġ{ Ġ"" Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġlength Ġ= Ġversion 1 s . size ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġto Int OrNull 2 Ġ= Ġversion 2 s [ i ]. toInt OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġto Int OrNull 1 Ġ= Ġversion 1 s [ i ]. toInt OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( toInt OrNull 1 Ġ== Ġnull Ġ&& Ġto Int OrNull 2 Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( toInt OrNull 1 Ġ!= Ġnull Ġ&& Ġto Int OrNull 2 Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġv 2 Ġ= Ġto Int OrNull 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġversion T ails . indexOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion 2 s [ i ]. replace ( version Tail Regex , Ġ"$ 1 "). uppercase ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġv 1 Ġ= Ġto Int OrNull 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġversion T ails . indexOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion 1 s [ i ]. replace ( version Tail Regex , Ġ"$ 1 "). uppercase ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( v 1 Ġ!= Ġ- 1 Ġ&& Ġv 1 Ġ== Ġv 2 Ġ&& Ġto Int OrNull 1 Ġ== Ġnull Ġ&& Ġto Int OrNull 2 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 Ġ= Ġversion 2 s [ i ]. replace ( version Tail Regex , Ġ"$ 2 "). toInt OrNull () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 Ġ= Ġversion 1 s [ i ]. replace ( version Tail Regex , Ġ"$ 2 "). toInt OrNull () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( v 1 Ġ== Ġ- 1 Ġ|| Ġv 2 Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġversion 1 s [ i ]. compareTo ( version 2 s [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( v 2 Ġ> Ġv 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( v 2 Ġ< Ġv 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽ¸ çŃī Ġæ¯ Ķ è¾ĥ ä¸ĭ ä¸Ģ ç»Ħ åĢ¼ ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ 0 Ċ }