package Ġcom . y ash lan . ap lik as ig ithub user . api Ċ Ċ import Ġcom . y ash lan . ap lik as ig ithub user . Build Config Ċ import Ġcom . y ash lan . ap lik as ig ithub user . data . model . Follow ers User Model Ċ import Ġcom . y ash lan . ap lik as ig ithub user . data . model . Following User Model Ċ import Ġcom . y ash lan . ap lik as ig ithub user . data . model . UserData Detail Model Ċ import Ġcom . y ash lan . ap lik as ig ithub user . data . model . UserData Search Model Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http . GET Ċ import Ġretrofit 2 . http . Path Ċ import Ġretrofit 2 . http . Query ĊĊ Ċ interface ĠApi Interface Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠbaseUrl Ġ= Ġ" https :// api . github . com /" ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġapi : ĠApi Interface ? Ġ= Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠApi Interface Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( api Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder (). add Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Request : ĠRequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġ" Bearer Ġ${ Build Config . GITHUB _ TOKEN }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( new Request ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Ġ= Ġretrofit . create ( Api Interface :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapi !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GET (" search / users ? q =") ĊĠĠĠ Ġfun Ġsearch User By Username (@ Query (" q ") Ġusername : ĠString ): ĠCall < UserData Search Model > ĊĊĠĠĠ Ġ@ GET ("/ users /{ username }") ĊĠĠĠ Ġfun Ġget Detail User By Username (@ Path (" username ") Ġusername : ĠString ): ĠCall < UserData Detail Model > ĊĊĠĠĠ Ġ@ GET ("/ users /{ username }/ followers ") ĊĠĠĠ Ġfun Ġget Follow ers User By Username (@ Path (" username ") Ġusername : ĠString ): ĠCall < ArrayList < Follow ers User Model >> ĊĊĠĠĠ Ġ@ GET ("/ users /{ username }/ following ") ĊĠĠĠ Ġfun Ġget Following User By Username (@ Path (" username ") Ġusername : ĠString ): ĠCall < ArrayList < Following User Model >> Ċ Ċ }