package Ġcom . info bip . k af k ist ry . slack Ċ Ċ import Ġcom . github . ser atch . js l ack . Slack Ċ import Ġcom . github . ser atch . js l ack . Slack Config Ċ import Ġcom . github . ser atch . js l ack . api . methods . request . chat . Chat Post Message Request Ċ import Ġcom . github . ser atch . js l ack . common . http . Slack HttpClient Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . boot . autoconfigure . condition . Conditional On Property Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . Proxy Selector Ċ import Ġjava . util . concurrent . Executors Ċ Ċ @ Component Ċ @ Conditional On Property (" app . slack . enabled ") Ċ class ĠSlack Sender ( slack Properties : ĠSlack Properties ) Ġ: ĠAuto Closeable Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Slack Sender :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġclient Ġ= Ġwith ( slack Properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( proxy Host . isNotBlank () Ġ&& Ġproxy Port Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Initializing Ġslack Ġsender Ġover Ġhttp Ġproxy Ġ{} :{} ", Ġproxy Host , Ġproxy Port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Selector ( Proxy Selector . of ( Inet SocketAddress ( proxy Host , Ġproxy Port ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠSlack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInstance ( Slack Config . DEFAULT , ĠSlack HttpClient ( httpClient )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. methods ( secret Token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġexecutor Ġ= ĠExec utors . new Single Thread Executor () ĊĊĠĠĠ Ġfun ĠsendMessage ( message Request : ĠChat Post Message Request ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecutor . submit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . chat Post Message ( message Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . is Ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Sending Ġmessage Ġto Ġslack Ġis Ġnot Ġok , Ġresponse : Ġ$ response ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Got Ġexception Ġwhile Ġsending Ġmessage Ġto Ġslack ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ= Ġexecutor . shutdown () Ċ } Ċ