package Ġnet . dio gop ar re ira . music app Ċ Ċ import Ġandroid . app . Application Ċ import Ġnet . dio gop ar re ira . music app . music repository . Remote Music Repository Ċ import Ġnet . dio gop ar re ira . music app . music repository . Tracks Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ Ċ interface ĠMusic List Callback Ġ{ ĊĠĠĠ Ġfun Ġon Receive List ( music List : ĠList < Music Entry Data >) Ċ } Ċ Ċ class ĠMusic Application Ġ: ĠApplication () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġinst : ĠMusic Application ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠMusic Application ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġinst ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġremote Music Repository : ĠRemote Music Repository ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġinst Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġremote Music Repository Ġ= ĠRemote Music Repository () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Music List ( country : ĠString , Ġcallback : ĠMusic List Callback ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ: ĠCall < Tracks > Ġ= Ġremote Music Repository . get Music List ( country ) ĊĊĠĠĠĠĠĠĠ Ġmusic List . enqueue ( object Ġ: ĠCallback < Tracks > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Tracks > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Receive List ( emptyList < Music Entry Data >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Tracks > ?, Ġresponse : ĠResponse < Tracks > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse !!. body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Receive List ( body !!. tracks . track ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }