package Ġcom . then ew b oston . bank . datasource Ċ Ċ import Ġcom . then ew b oston . bank . model . Bank List Ċ import Ġcom . then ew b oston . common . http . Network Client Ċ import Ġcom . then ew b oston . common . http . Outcome Ċ import Ġcom . then ew b oston . common . http . make Api Call Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . utils . io . errors .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠBank DataSource Ġ@ Inject Ġconstructor ( private Ġval Ġnetwork Client : ĠNetwork Client ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġfetch B anks () Ġ= Ġmake Api Call ( ĊĠĠĠĠĠĠĠ Ġcall Ġ= Ġ{ Ġb anks () Ġ}, ĊĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ" Failed Ġto Ġretrieve Ġb anks " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġb anks (): ĠOut come < Bank List > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġnetwork Client . client . get < Bank List > ("/ b anks ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . b anks . isNull OrEmpty () Ġ-> ĠOut come . Error (" Error Ġfetching Ġb anks ", ĠIOException ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠOut come . Success ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ