package Ġtech . mus o . demo . repos . service Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http . GET Ċ import Ġtech . mus o . demo . common . entity . Stock Ċ Ċ /** Ċ Ġ* ĠThis Ġlogic Ġcontains Ġall Ġthe Ġcode Ġfor Ġthe ĠRepository Ġto Ġinterface Ġwith Ġthe ĠNetwork ĠAPI . Ċ Ġ* Ċ Ġ* ĠAll Ġthe Ġnetwork Ġlogic Ġshould Ġbe Ġcontained Ġin Ġthis Ġmodule Ġto Ġavoid Ġintro ducing Ġerrors . Ċ Ġ* Ġe . g . ĠNetwork ing Ġon ĠUI , Ġbreaking Ġseparation Ġof Ġconcerns , Ġetc . Ċ Ġ* Ċ Ġ* ĠThe ĠAPI Ġis Ġa ĠService Ġbecause Ġwe Ġdo Ġnot Ġwant Ġto Ġany Ġmore Ġinstances Ġof Ġit Ġthan Ġwe Ġneed . Ċ Ġ* ĠFor Ġthis Ġreason , Ġthe ĠStock Data Repository Ġthat Ġuses Ġthis , Ġimplements Ġit Ġas Ġa ĠSingleton . Ċ Ġ*/ Ċ internal Ġclass ĠStock WebService Ġ: ĠStock Service Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// gist . githubusercontent . com /") ĊĠĠĠĠĠĠĠ Ġ. client ( Ok HttpClient ()) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ// Ġinstantiate Ġretrofit ĊĠĠĠ Ġprivate Ġval Ġstock WebService Ġ= Ġretrofit . create ( Stock Service :: class . java ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll Sto cks (): ĠList < Stock > Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstock WebService . getAll Sto cks () ĊĠĠĠĠĠĠĠ Ġresult . sh uffled () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetUser Sto cks (): ĠList < Stock > Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstock WebService . getUser Sto cks () ĊĠĠĠĠĠĠĠ Ġresult Ġ Ġ// Ġcould Ġsort Ġby Ġhold ings , Ġdate , Ġetc . ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠHack ed Ġtogether Ġendpoint Ġthat Ġreturns Ġa Ġstatic ĠJSON Ġobject Ġby Ġfetching Ġit Ġfrom Ġour Ġ" API ". Ċ Ġ* Ċ Ġ* ĠThis Ġinterface Ġis Ġrequired Ġfor Ġretrofit . Ċ Ġ* ĠIt Ġalso Ġallows Ġus Ġto Ġuse Ġthe Ġinterface Ġfor Ġa Ġfake Ġrepository Ġfor Ġtesting . Ċ Ġ*/ Ċ abstract Ġinterface ĠStock Service Ġ{ ĊĠĠĠ Ġ@ GET (" mus ot ec / 8 9 da 0 ef 3 6 5 8 cb 9 0 0 7 5 8 9 3 3 0 7 b 0 4 6 a 4 8 a / raw / b 1 4 6 2 4 c 9 0 6 2 f 2 6 c 1 de 4 ac 7 d 8 2 da 5 ca 5 7 2 e 0 5 0 4 0 6 / stocks . json ") ĊĠĠĠ Ġsuspend Ġfun ĠgetAll Sto cks (): ĠList < Stock > ĊĊĠĠĠ Ġ// ĠTODO : Ġunused , Ġbut Ġthis Ġwould Ġbe Ġanother Ġendpoint ĊĠĠĠ Ġsuspend Ġfun ĠgetUser Sto cks (): ĠList < Stock > Ċ }