package Ġcom . id orm y . sms . for warder . utils . sender Ċ Ċ import Ġandroid . os . Looper Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . id orm y . sms . for warder . database . entity . Rule Ċ import Ġcom . id orm y . sms . for warder . entity . Msg Info Ċ import Ġcom . id orm y . sms . for warder . entity . result . Telegram Result Ċ import Ġcom . id orm y . sms . for warder . entity . setting . Telegram Setting Ċ import Ġcom . id orm y . sms . for warder . utils . Send Utils Ċ import Ġcom . id orm y . sms . for warder . utils . Setting Utils Ċ import Ġokhttp 3 .* Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . Proxy Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Suppress (" Private PropertyName ", Ġ" UNUSED _ PARAMETER ", Ġ" unused ") Ċ class ĠTelegram Utils Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG : ĠString Ġ= ĠTelegram Utils :: class . java . simple Name ĊĊĠĠĠĠĠĠĠ Ġfun Ġsend Msg ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetting : ĠTelegram Setting , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Info : ĠMsg Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrule : ĠRule ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Id : ĠLong ?, ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent : ĠString Ġ= Ġif Ġ( rule Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Info . getContent For Send ( rule . sms Template , Ġrule . regex Replace ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Info . getContent For Send ( Setting Utils . sms Template . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Url Ġ= Ġif Ġ( setting . api Token . startsWith (" http ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting . api Token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// api . telegram . org / bot " Ġ+ Ġsetting . api Token Ġ+ Ġ"/ sendMessage " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" request Url :$ request Url ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Builder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® ä»£çĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( setting . proxy Type Ġ== ĠProxy . Type . HTTP Ġ|| Ġsetting . proxy Type Ġ== ĠProxy . Type . SOCK S ) Ġ&& Ġ! TextUtils . isEmpty ( setting . proxy Host ) Ġ&& Ġ! TextUtils . isEmpty ( setting . proxy Port )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä»£çĲĨ æľįåĬ¡åĻ¨ çļĦ IP åĴĮ ç«¯åı£ åı· ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Builder . proxy ( Proxy ( setting . proxy Type , Ġsetting . proxy Port ?. let Ġ{ ĠInet SocketAddress ( setting . proxy Host , Ġit . toInt ()) Ġ})) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä»£çĲĨ çļĦ é ī ´ æĿĥ è´¦åı· å¯Ĩçłģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( setting . proxy Authenticator Ġ== Ġtrue Ġ&& Ġ(! TextUtils . isEmpty ( setting . proxy Username ) Ġ|| Ġ! TextUtils . isEmpty ( setting . proxy Password ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Builder . proxy Authenticator Ġ{ Ġ_: ĠRoute ?, Ġresponse : ĠResponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® ä»£çĲĨ æľįåĬ¡åĻ¨ è´¦åı· å¯Ĩçłģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠCredentials . basic ( setting . proxy Username . toString (), Ġsetting . proxy Password . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Proxy - Authorization ", Ġcredential ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® éĩį è¯ķ æĭ ¦ æĪª åĻ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretry Times : ĠInt Ġ= ĠSetting Utils . request Retry Times ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( retry Times Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Time : ĠLong Ġ= ĠSetting Utils . request Delay Time . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretry Interceptor : ĠRetry Interceptor Ġ= ĠRetry Interceptor . Builder (). execution Count ( retry Times ). retry Interval ( delay Time ). log Id ( 0 ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Builder . add Interceptor ( retry Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® è¯»åıĸ è¶ħæĹ¶ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġclient Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( Setting Utils . request Timeout . to Long (), ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( Setting Utils . request Timeout . to Long (), ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( Setting Utils . request Timeout . to Long (), ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( setting . method Ġ!= Ġnull Ġ&& Ġsetting . method Ġ== Ġ" GET ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( request Url Ġ+ Ġ"? chat _ id =" Ġ+ Ġsetting . chat Id Ġ+ Ġ"& text =" Ġ+ ĠURL Encoder . encode ( content , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Map : ĠMutable Map < String , ĠAny > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Map [" chat _ id "] Ġ= Ġsetting . chat Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Map [" text "] Ġ= Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Map [" parse _ mode "] Ġ= Ġ" HTML " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Map [" disable _ web _ page _ preview "] Ġ= Ġ" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Msg : ĠString Ġ= ĠGson (). toJson ( body Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" request Msg :$ request Msg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= ĠRequest Body . create ( MediaType . parse (" application / json ; charset = utf - 8 "), Ġrequest Msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( request Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSend Utils . update Logs ( log Id , Ġ 0 , Ġe . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// X Toast Utils . error (" åıĳéĢģ å¤±è´¥ ï¼ļ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . loop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Str Ġ= Ġresponse . body ()?. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Response ï¼ļ" Ġ+ Ġresponse . code () Ġ+ Ġ" ï¼Į " Ġ+ Ġresponse Str ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresp Ġ= ĠGson (). fromJson ( response Str , ĠTelegram Result :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resp . ok Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSend Utils . update Logs ( log Id , Ġ 2 , Ġresponse Str . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// X Toast Utils . success ( Res Utils . getString ( R . string . request _ succeeded )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . loop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSend Utils . update Logs ( log Id , Ġ 0 , Ġresponse Str . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// X Toast Utils . error ( Res Utils . getString ( R . string . request _ failed ) Ġ+ Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper . loop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsend Msg ( setting : ĠTelegram Setting , Ġmsg Info : ĠMsg Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Msg ( setting , Ġmsg Info , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }