package Ġtop . little fog cat . simp led atab ind ing kt Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . databinding . Observable Boolean Ċ import Ġandroidx . databinding . Observable Field Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Callback Ċ import Ġokhttp 3 . Response Ċ import Ġjava . io . IOException Ċ Ċ class ĠStock ViewModel () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Stock ViewModel " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrepository Ġ= ĠStock Repository () ĊĊĠĠĠ Ġval Ġstock Info Observable Ġ= ĠObservable Field < Stock Info >() ĊĠĠĠ Ġval Ġrefresh ing Observable Ġ= ĠObservable Boolean ( false ) ĊĊĠĠĠ Ġfun Ġquery Stock ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreal Code Ġ= Ġre format Code ( code ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġrefresh ing Observable . set ( true ) ĊĊĠĠĠĠĠĠĠ Ġrepository . get Stock Info ( real Code , Ġobject Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Failure : Ġ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh ing Observable . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġresponse . body ?. string () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Response : Ġ$ s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġs . substring ( s . indexOf ("\" ") Ġ+ Ġ 1 , Ġs . lastIndexOf ("\ "" )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Arr Ġ= Ġdata . split (" ~ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstock Info Ġ= ĠStock Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġdata Arr [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġdata Arr [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġdata Arr [ 3 ]. toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincrease Ġ= Ġdata Arr [ 3 2 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstock Info Observable . set ( stock Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh ing Observable . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" query Stock : Ġthread =" Ġ+ ĠThread . currentThread (). name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä»£çłģ æł¼å¼ı ï¼ļ 0 0 0 xxx æĪĸ 6 0 0 xxx ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġre format Code ( code : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( code . length Ġ!= Ġ 6 ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( code . startsWith (" 0 0 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" sz $ code " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( code . startsWith (" 6 0 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" sh $ code " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ }