package Ġmax . github api Ċ Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ class ĠGitHub Latest Api ( val Ġrepo Name : ĠString ) Ġ: ĠGitHub Latest Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( github Gson )) ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( GITHUB _ API _ URL ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġfun ĠgetLast Release (): ĠGithub Release Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġretrofit . create ( GitHub Latest Api URL :: class . java ). latest Release ( repo Name ). execute () ĊĠĠĠĠĠĠĠ Ġcheck ( response . body () Ġ!= Ġnull ) Ġ{ Ġ" Return Ġerror Ġ${ response . code ()} Ġ: Ġ${ response . error Body () }" Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . body () !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetLast Release ( callback : Ġ( callback : ĠGithub Release ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġretrofit . create ( GitHub Latest Api URL :: class . java ). latest Release ( repo Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( object Ġ: ĠCallback < Github Release > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Github Release >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Github Release >, Ġresponse : ĠResponse < Github Release >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( response . body () Ġ!= Ġnull ) Ġ{ Ġ" Return Ġerror Ġ${ response . code ()} Ġ: Ġ${ response . error Body () }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( response . body () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetLast Pre Release (): ĠGithub Release ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgithub Release Page Ġ= ĠGithub Release Page ( repo Name ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( github Release Page . next () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgithub Release Page . data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . pr erelease ) Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ