package Ġcom . eng ency . black jack . network Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . eng ency . black jack . Build Config Ċ import Ġcom . github . kit tin un f . fuel . Fuel Ċ import Ġcom . github . kit tin un f . fuel . android . core . Json Ċ import Ġcom . github . kit tin un f . fuel . core . Fuel Error Ċ import Ġcom . github . kit tin un f . fuel . gson . response Object Ċ Ċ data Ġclass ĠLogin Response ( var Ġgroup Info : ĠGroup Info , Ġvar Ġtoken : ĠString Ġ= Ġ"") Ċ data Ġclass ĠGroup Info ( var Ġname : ĠString , Ġvar Ġgroup : ĠString , Ġvar Ġpoints : ĠNumber , Ġvar Ġproducts : ĠList < Server Product >) Ċ data Ġclass ĠServer Team Score ( var Ġ_ id : ĠInt , Ġval Ġname : ĠString , Ġval Ġgroup : ĠString , Ġval Ġpoints : ĠInt ) Ċ data Ġclass ĠServer Product ( var Ġ_ id : ĠInt , Ġval Ġname : ĠString , Ġval Ġdescription : ĠString , Ġval Ġimage : ĠString , Ġval Ġcosts : ĠInt , Ġval Ġreward : ĠInt , Ġval Ġcode : ĠString , Ġval Ġre warded : ĠBoolean ) Ċ data Ġclass ĠGroups Response ( var Ġscores : ĠList < Server Team Score >); Ċ data Ġclass ĠBar code Success ( var Ġgroup Info : ĠGroup Info , Ġvar Ġtype : ĠString , Ġvar Ġmessage : ĠString , Ġvar ĠproductId : ĠInt ) Ċ Ċ class ĠNetwork Helper Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġlogin ( groupName : ĠString , Ġpassword : ĠString , Ġhandler : ĠOn Network Response Interface < Login Response >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF uel . post ("${ Build Config . SERVER _ URL }/ auth / login ", ĠlistOf (" name " Ġto ĠgroupName , Ġ" password " Ġto Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Object < Login Response > Ġ{ Ġ_, Ġ_, Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġ{ Ġdata : ĠLogin Response Ġ-> Ġhandler . success ( data ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Ġ= Ġ{ Ġerror : ĠF uel Error Ġ-> Ġthis . handle Fuel Error ( error , Ġhandler ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsubmit Product ( code : ĠString , Ġtoken : ĠString , Ġsuccess : Ġ( Barcode Success ) Ġ-> ĠUnit , Ġfailure : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF uel . post ("${ Build Config . SERVER _ URL }/ products ", ĠlistOf (" code " Ġto Ġcode )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - token " Ġto Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Object < Barcode Success > Ġ{ Ġ_, Ġ_, Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġsuccess , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Ġ= Ġ{ Ġerror : ĠF uel Error Ġ-> Ġthis . handle Fuel Error ( error , Ġfailure ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsubmit F CM Token ( token : ĠString , Ġf cm Token : ĠString , Ġsuccess : Ġ( Any ) Ġ-> ĠUnit , Ġfailure : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF uel . post ("${ Build Config . SERVER _ URL }/ groups / current / fc m ", ĠlistOf (" token " Ġto Ġf cm Token )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - token " Ġto Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Object < Any > Ġ{ Ġ_, Ġ_, Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġsuccess , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Ġ= Ġ{ Ġerror : ĠF uel Error Ġ-> Ġthis . handle Fuel Error ( error , Ġfailure ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Group Info ( token : ĠString , Ġsuccess : Ġ( Group Info ) Ġ-> ĠAny , Ġfailure : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF uel . get ("${ Build Config . SERVER _ URL }/ groups / current ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - token " Ġto Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Object < Group Info > Ġ{ Ġ_, Ġ_, Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġsuccess , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Ġ= Ġ{ Ġerror : ĠF uel Error Ġ-> Ġthis . handle Fuel Error ( error , Ġfailure ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġlist Scores ( token : ĠString , Ġsuccess : Ġ( Groups Response ) Ġ-> ĠAny , Ġfailure : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF uel . get ("${ Build Config . SERVER _ URL }/ groups ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - token " Ġto Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Object < Groups Response > Ġ{ Ġ_, Ġ_, Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġsuccess , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Ġ= Ġ{ Ġerror : ĠF uel Error Ġ-> Ġthis . handle Fuel Error ( error , Ġfailure ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġhandle Fuel Error ( error : ĠF uel Error , Ġcallback : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( extract Message ( error )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġhandle Fuel Error ( error : ĠF uel Error , Ġcallback : ĠOn Network Response Interface <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . failure ( extract Message ( error )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġextract Message ( error : ĠF uel Error ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Data Ġ= ĠJson ( String ( error . response . data )). obj () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġ" Unknown Ġerror " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Data . has (" message ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġjson Data . getString (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Fuel Ġerror ", Ġ"$ message Ġ- Ġ$ error ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmessage ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ