package Ġcom . id orm y . sms . for warder . sender Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroid . util . Log Ċ import Ġcom . alibaba . fastjson . JSON Ċ import Ġcom . id orm y . sms . for warder . Sender Activity Ċ import Ġcom . id orm y . sms . for warder . utils . Log Util . update Log Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġjava . io . IOException Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . Mac Ċ import Ġjavax . crypto . spec . SecretKey Spec ĊĊ Ċ object ĠSender D ing D ing Msg Ġ{ ĊĠĠĠ Ġvar ĠTAG Ġ= Ġ" Sender D ing ding Msg " ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġsend Msg ( ĊĠĠĠĠĠĠĠ Ġlog Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġhand Error : ĠHandler ?, ĊĠĠĠĠĠĠĠ Ġtoken : ĠString ?, ĊĠĠĠĠĠĠĠ Ġsecret : ĠString ?, ĊĠĠĠĠĠĠĠ Ġat Mobile s : ĠString ?, ĊĠĠĠĠĠĠĠ Ġat All : ĠBoolean ?, ĊĠĠĠĠĠĠĠ Ġmsg : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtoken Ġ= Ġtoken ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" send Msg Ġtoken :$ token Ġsecret :$ secret Ġat Mobile s :$ at Mobile s Ġat All :$ at All Ġmsg :$ msg ") ĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== Ġnull Ġ|| Ġtoken . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoken Ġ= Ġ" https :// o api . ding talk . com / robot / send ? access _ token =$ token " ĊĠĠĠĠĠĠĠ Ġif Ġ( secret Ġ!= Ġnull Ġ&& Ġ! secret . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring To Sign Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ timestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ secret ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmac Ġ= ĠMac . getInstance (" H mac SHA 2 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmac . init ( SecretKey Spec ( secret . toByteArray ( charset (" UTF - 8 ")), Ġ" H mac SHA 2 5 6 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign Data Ġ= Ġmac . do Final ( string To Sign . toByteArray ( charset (" UTF - 8 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign Ġ= ĠURL Encoder . encode ( String ( Base 6 4 . encode ( sign Data , ĠBase 6 4 . NO _ WRAP )), Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ+= Ġ"& timestamp =$ timestamp & sign =$ sign " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" webhook _ token :$ token ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtext Msg Map : ĠMutable Map < Any ?, ĠAny ?> Ġ= ĠHashMap < Any ?, ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġtext Msg Map [" msg type "] Ġ= Ġ" text " ĊĠĠĠĠĠĠĠ Ġval Ġtext Text : ĠMutable Map < Any ?, ĠAny ?> Ġ= ĠHashMap < Any ?, ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġtext Text [" content "] Ġ= Ġmsg ĊĠĠĠĠĠĠĠ Ġtext Msg Map [" text "] Ġ= Ġtext Text ĊĠĠĠĠĠĠĠ Ġif Ġ( at Mobile s Ġ!= Ġnull Ġ|| Ġat All Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Map : ĠMutable Map < Any ?, ĠAny ?> Ġ= ĠHashMap < Any ?, ĠAny ?> () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at Mobile s Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Mobile s Array Ġ= Ġat Mobile s . split ("," ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Mobile s List : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( at Mobile Ġin Ġat Mobile s Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . is Digits Only ( at Mobile )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat Mobile s List . add ( at Mobile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at Mobile s List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat Map [" at Mobile s "] Ġ= Ġat Mobile s List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġat Map [" is At All "] Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at All Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat Map [" is At All "] Ġ= Ġat All ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Msg Map [" at "] Ġ= Ġat Map ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtext Msg Ġ= ĠJSON . toJSON String ( text Msg Map ) ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" text Msg :$ text Msg ") ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Body : ĠRequest Body Ġ= ĠRequest Body . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application / json ; charset = utf - 8 ". to MediaType OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Msg ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġclient . new Call ( request ) ĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Log ( log Id , Ġ 0 , Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Failure ï¼ļ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hand Error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . what Ġ= ĠSender Activity . NOTIFY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString (" DATA ", Ġ" åıĳéĢģ å¤±è´¥ ï¼ļ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . data Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhand Error . sendMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Str Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Code ï¼ļ" Ġ+ Ġresponse . code . toString () Ġ+ Ġresponse Str ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : ç² Ĺ çķ¥ è§£æŀĲ æĺ¯åĲ¦ åıĳéĢģ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Str . contains ("\" errcode \": 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Log ( log Id , Ġ 1 , Ġresponse Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Log ( log Id , Ġ 0 , Ġresponse Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hand Error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . what Ġ= ĠSender Activity . NOTIFY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString (" DATA ", Ġ" åıĳéĢģ çĬ¶æĢģ ï¼ļ $ response Str ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . data Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhand Error . sendMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" C ox xy y de ï¼ļ" Ġ+ Ġresponse . code . toString () Ġ+ Ġresponse Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }