package Ġxyz . sch wa ab . music . he ar this Ċ Ċ import Ġkotlinx . coroutines . Cancellation Exception Ċ import Ġkotlinx . serialization . Serialization Exception Ċ import Ġxyz . sch wa ab . music . model . Artist Ċ import Ġxyz . sch wa ab . music . track . Get Tracks Response Ċ import Ġxyz . sch wa ab . music . track . Track Repository Ċ import Ġjava . io . IOException Ċ Ċ class ĠH ear this Track Repository ( private Ġval Ġhear this Interface : ĠH ear this Client Interface ) Ġ: ĊĠĠĠ ĠTrack Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Tracks For Artist ( ĊĠĠĠĠĠĠĠ Ġartist : ĠArtist , ĊĠĠĠĠĠĠĠ Ġpage : ĠInt , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt ĊĠĠĠ Ġ): ĠGet Tracks Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhear this Interface . get Artist Tracks ( artist . access Info . permalink , Ġpage , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtracks Ġ= Ġresponse . body () !!. map Ġ{ Ġit . to Track () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Tracks Response . Success ( tracks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBad Ġrequest , Ġinternal Ġserver Ġerror , Ġte ap ot , Ġetc . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Tracks Response . Failure . Service Unavailable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( c ancellation : ĠC ancellation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Tracks Response . Failure . Cancelled ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( io Exception : ĠIOException ) Ġ{ Ġ// ĠSocket , Ġtimeout , Ġetc . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Tracks Response . Failure . L ack Of Connection ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠSerialization Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Tracks Response . Failure . Serialization ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }