package Ġcom . mig uel ange l bot i . stocks . data . network Ċ Ċ import Ġcom . mig uel ange l bot i . stocks . Build Config Ċ import Ġcom . mig uel ange l bot i . stocks . data . network . spreadsheet . Sp readsheet Api Ċ import Ġcom . mig uel ange l bot i . stocks . data . network . spreadsheet . results . Stock Info Result Ċ import Ġcom . mig uel ange l bot i . stocks . data . network . spreadsheet . results . to Domain Ċ import Ġcom . mig uel ange l bot i . stocks . entities . Stock Ċ import Ġcom . mig uel ange l bot i . stocks . utils . get Utc Datetime AsString Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġokhttp 3 . logging . Http Logging Interceptor . Level . BODY Ċ import Ġretrofit 2 . Ret rofit . Builder Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġtim ber . log . Tim ber Ċ import Ġokhttp 3 . Ok HttpClient . Builder Ġas ĠOk Http Builder Ċ Ċ class ĠNetwork DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġservice Ġ= ĠBuilder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// script . google . com / macros / s /${ Build Config . SP READ SHE ET _ ID }/ ") ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ()) ĊĠĠĠĠĠĠĠ Ġ. client ( Ok Http Builder (). add Interceptor ( Http Logging Interceptor (). apply Ġ{ Ġlevel Ġ= ĠB ODY Ġ}). build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ. create ( Sp readsheet Api :: class . java ) ĊĊĠĠĠ Ġsuspend Ġfun Ġsearch Symbol ( symbol : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" search Symbol ($ symbol )") ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . search Symbol ( symbol ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Stock ( symbol : ĠString ): ĠStock ? Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" get Stock ($ symbol )") ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . get Stock Info ( symbol ). first (). to Domain () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Sto cks ( stocks : ĠList < Stock >): ĠList < Stock > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsymbols Ġ= Ġstock s . join ToString ( separator Ġ= Ġ", ") Ġ{ Ġit . symbol Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . d (" update Sto cks ($ symbols )") ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . get Stock Info ( symbols ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstock s ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstock s . map Ġ{ Ġstock Ġ-> Ġstock . update Price ( result . first OrNull Ġ{ Ġstock . symbol Ġ== Ġit . symbol Ġ}) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠStock . update Price ( stock Info : ĠStock Info Result ?): ĠStock Ġ{ ĊĠĠĠĠĠĠĠ Ġstock Info Ġ?: Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġreturn Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġstock Info . price , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Open Ġ= Ġstock Info . price Open , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Date Ġ= Ġget Utc Datetime AsString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ