package Ġcom . horizon . ud id . manager Ċ Ċ import Ġcom . horizon . did . Dark Physics Info Ċ import Ġcom . horizon . did . DeviceId Ċ import Ġcom . horizon . did . Physics Info Ċ import Ġcom . horizon . event . Event Manager Ċ import Ġcom . horizon . task . Task Center Ċ import Ġcom . horizon . ud id . application . Global Config Ċ import Ġcom . horizon . ud id . data . App Kv Ċ import Ġcom . horizon . ud id . event . Events Ċ import Ġcom . horizon . ud id . network . HttpClient Ċ import Ġcom . horizon . ud id . network . URL Config Ċ import Ġcom . horizon . ud id . util . Hex Util Ċ import Ġcom . horizon . ud id . util . Network Util Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody Ċ import Ġorg . json . JSONObject Ċ Ċ object ĠDevice Manager Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Device Manager " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠUPDATE _ INTERVAL Ġ= Ġ 2 Ġ* Ġ 2 4 Ġ* Ġ 3 6 0 0 L ĊĊĠĠĠ Ġprivate Ġval ĠJSON _ TYPE Ġ= ĠMediaType . parse (" application / json ") ĊĊĠĠĠ Ġfun Ġsync DeviceId Async () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask Center . lane IO . execute (" sync DeviceId ", Ġ{ Ġsync DeviceId () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsync DeviceId () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Network Util . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġud id Ġ= ĠApp Kv . ud id ĊĠĠĠĠĠĠĠ Ġif Ġ( ud id . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery U did () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( now Ġ- ĠApp Kv . last Sync U did Time Ġ> ĠUPDATE _ INTERVAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Kv . last Sync U did Time Ġ= Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload DeviceInfo ( ud id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery U did () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Json Ġ= Ġget DeviceInfo (" query ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= ĠRequest Body . create ( JSON _ TYPE , Ġrequest Json . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( URL Config . DEVICE _ ID _ SERVER Ġ+ Ġ"/ did ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠHttpClient . request ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Logger . i ( TAG , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json . getInt (" code ") Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġud id Ġ= Ġjson . getString (" ud id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Kv . ud id Ġ= Ġud id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Manager . notify ( Events . DEVICE _ ID _ SYNC _ COMPLETE , Ġud id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Kv . last Sync U did Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Logger . e ( TAG , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠEvent Manager . notify ( Events . DEVICE _ ID _ SYNC _ COMPLETE , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload DeviceInfo ( ud id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Json Ġ= Ġget DeviceInfo (" update ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Json . put (" ud id ", Ġud id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= ĠRequest Body . create ( JSON _ TYPE , Ġrequest Json . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( URL Config . DEVICE _ ID _ SERVER Ġ+ Ġ"/ did ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠHttpClient . request ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Logger . d ( TAG , Ġresponse ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Logger . e ( TAG , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget DeviceInfo ( operation : ĠString ): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠGlobal Config . context ĊĠĠĠĠĠĠĠ Ġval Ġrequest Json Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġval ĠdeviceId Info Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" mac ", ĠDevice Id . get Mac Address ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" android _ id ", ĠDevice Id . get Android ID ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" serial _ no ", ĠDevice Id . get Serial No ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" physics _ info ", ĠHex Util . long 2 Hex ( Physics Info . get Hash ( context ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" dark _ physics _ info ", ĠHex Util . long 2 Hex ( Dark Physics Info . get Hash ( context ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequest Json . put (" operation ", Ġoperation ) ĊĠĠĠĠĠĠĠ Ġrequest Json . put (" device _ id _ info ", ĠdeviceId Info ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrequest Json ĊĠĠĠ Ġ} ĊĊĊĊ Ċ }