package Ġcom . reg res oa . it aca . model . repositories Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . google . android . gms . tasks . Continuation Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . database . Database Reference Ċ import Ġcom . google . firebase . storage . Storage Reference Ċ import Ġcom . google . firebase . storage . Upload Task Ċ import Ġcom . mand ala . lib . network . Ret rofit Factory Ċ import Ġcom . reg res oa . it aca . Build Config Ċ import Ġcom . reg res oa . it aca . model . entities . SearchResult Ċ import Ġcom . reg res oa . it aca . model . remote . books api . API Books Ċ import Ġcom . reg res oa . it aca . model . remote . firebase . Fire Base DB Ċ import Ġio . reactivex . Observable Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġjust _ Ġon Ġ 2 7 / 0 1 / 2 0 1 9 . Ċ Ġ*/ Ċ class ĠBooks Repository { ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġinstance : ĠBooks Repository ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġapi Books : ĠAPI Books ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġmy Library : ĠDatabase Reference ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġmy Files : ĠStorage Reference ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinstance Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġapi Books Ġ= ĠRet rofit Factory . ret rofit ( Build Config . GOOGLE _ API _ URL ). create ( API Books :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Library Ġ= ĠFire Base DB . my Library ĊĠĠĠĠĠĠĠ Ġmy Files Ġ= ĠFire Base DB . my Files ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch IS BN ( isbn : ĠString ): ĠObservable < SearchResult >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapi Books . search IS BN ( isbn , Ġ 4 0 . toString (), ĠBuild Config . API _ KEY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget My Books (): ĠDatabase Reference { ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Library ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupload File ( name : ĠString , Ġfile : ĠFile ): ĠTask < Uri >{ ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= Ġmy Files . child ( name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġref . put File ( Uri . from File ( file )). continue With Task ( Continuation < Upload Task . Task Snapshot , ĠTask < Uri >> Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . exception ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Continuation Ġref . download Url ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete File ( name : ĠString ): ĠTask < Void >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Files . child ( name ). delete () ĊĠĠĠ Ġ} Ċ }