package Ġir . he yd ari i . music manager . framework Ċ Ċ import Ġcom . p ou ya he yd ari . android . core . data . Artist DataSource Ċ import Ġcom . p ou ya he yd ari . android . core . domain .* Ċ import Ġir . he yd ari i . music manager . framework . network . Ret rofit Album s Interface Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠArtist DataSource Ġ@ Inject Ġconstructor ( private Ġval Ġartist Ret rofit : ĠRet rofit Album s Interface ) Ġ: ĊĠĠĠ ĠArtist DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfind Artist ( artist : ĠString , Ġpage Number : ĠInt ): ĠArtist Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġartist Ret rofit . find Artist ( artist , Ġpage Number ) ĊĠĠĠĠĠĠĠ Ġval Ġartists Ġ= Ġresponse . artist Results . artist matches . artist . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArtist ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . image . last (). text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠArtist Response ( artists , Ġresponse . artist Results . total Results . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Top Album sBy Artist ( artist : ĠString , Ġpage Number : ĠInt ): ĠAlbum Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġartist Ret rofit . get Top Album sBy Artist ( artist , Ġpage Number ) ĊĠĠĠĠĠĠĠ Ġval Ġalbum s Ġ= Ġresponse . top albums . album . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlbum ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . artist . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . image . last (). text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAlbum Response ( albums , Ġresponse . top albums . attr . total . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Album Details ( artist : ĠString , Ġalbum Name : ĠString ): ĠAlbum Details Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġartist Ret rofit . get Album Details ( artist , Ġalbum Name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠAlbum Details ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . album . artist , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . album . image . last ()?. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . album . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . album . tracks ?. track ?. map Ġ{ ĠTrack ( null , Ġit . name , Ġnull ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. or Empty () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }