package Ġcom . h end ra angg rian . plan o Ċ Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . engine . okhttp . Ok Http Ċ import Ġio . ktor . client . features . json . Gson Serializer Ċ import Ġio . ktor . client . features . json . Json Feature Ċ import Ġio . ktor . client . request . HttpRequest Builder Ċ import Ġio . ktor . client . request . get Ċ import Ġio . ktor . client . request . header Ċ import Ġio . ktor . http . HttpHeaders Ċ import Ġio . ktor . http . take From Ċ import Ġorg . apache . maven . artifact . version ing . Comparable Version Ċ Ċ object ĠGitHub Api Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval Ġendpoint Ġ= Ġ" https :// api . github . com " ĊĠĠĠ Ġprivate Ġval Ġclient : ĠHttpClient Ġ= ĠHttpClient ( Ok Http ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠGson Serializer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Release ( extension : ĠString ): ĠRelease Ġ= ĊĠĠĠĠĠĠĠ Ġclient . get < List < Release >> Ġ{ Ġapi Url (" repos / h end ra angg rian / plan o / releases ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġrelease Ġ-> Ġrelease . assets . any Ġ{ Ġit . name . endsWith ( extension ) Ġ} Ġ} Ġ?: ĠRelease . NOT _ FOUND ĊĊĠĠĠ Ġprivate Ġfun ĠHttpRequest Builder . api Url ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheader ( HttpHeaders . Cache Control , Ġ" no - cache ") ĊĠĠĠĠĠĠĠ Ġurl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtake From ( endpoint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoded Path Ġ= Ġpath ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠAsset ( ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" browser _ download _ url ") Ġval Ġdownload Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġstate : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Uploaded (): ĠBoolean Ġ= Ġstate Ġ== Ġ" uploaded " ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠRelease ( ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" html _ url ") Ġval Ġhtml Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġassets : ĠList < Asset > ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠNOT _ FOUND Ġ= ĠRelease ("", Ġ"", Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis New er Than ( current Version : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComparable Version ( name ) Ġ> ĠComparable Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassets . isNotEmpty () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassets . all Ġ{ Ġit . is Uploaded () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ