package Ġcom . to bi ass ch uer g . phot ob ooth . g photo Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġcom . to bi ass ch uer g . phot ob ooth . g photo . api . G Photo Backend Ċ import Ġcom . to bi ass ch uer g . phot ob ooth . ui . main . Settings Activity Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . await Ċ import Ġretrofit 2 . converter . scal ars . Scalars Converter Factory Ċ import Ġtim ber . log . Tim ber Ċ import Ġkotlin . system . measure Time Millis ĊĊ Ċ class ĠG Photo 2 ServiceImpl ( ĊĠĠĠ Ġpreferences : ĠSharedPreferences Ċ ) Ġ: ĠG Photo 2 Service Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġr asp B erry Url : ĠString Ġby Ġlazy Ġ{ ĊĊĠĠĠĠĠĠĠ Ġpreferences . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Activity . PRE FS _ KEY _ R AS PB ERR Y _ URL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Activity . R AS PB ERR Y _ URL _ DEFAULT ĊĠĠĠĠĠĠĠ Ġ) !! ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġapi : ĠG Photo Backend Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( r asp B erry Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Scalars Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġretrofit . create ( G Photo Backend :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġstatus (): ĠString Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo String Ġ= Ġapi . info (). await () ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Status Ġresponse : Ġ$ info String ") ĊĠĠĠĠĠĠĠ Ġinfo String ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcapture (): ĠString Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo String Ġ= Ġapi . capture (). await () ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Capture : Ġ$ info String ") ĊĠĠĠĠĠĠĠ Ġinfo String ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġthumbnail ( fileName : ĠString ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap : ĠBitmap Ġ= ĠBitmap . create Bitmap ( 1 , Ġ 1 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġmillis Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= Ġapi . thumbnail ( fileName ). await (). byte Stream (). read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap Factory . decode ByteArray ( byteArray , Ġ 0 , ĠbyteArray . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Downloading Ġthumbnail Ġtook Ġ$ millis Ġmillis ") ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfull Size ( fileName : ĠString ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap : ĠBitmap Ġ= ĠBitmap . create Bitmap ( 1 , Ġ 1 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġmillis Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= Ġapi . full Size ( fileName ). await (). byte Stream (). read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap Factory . decode ByteArray ( byteArray , Ġ 0 , ĠbyteArray . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Download Ġfull Ġsize Ġphoto Ġtook Ġ$ millis Ġmillis ") ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} Ċ }