package Ġcom . just ai . ja ic f . channel . ja ic p . http Ċ Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . DEFAULT _ PROXY _ URL Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . Ja ic p Live Chat Provider Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . dto . Channel Config Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . dto . Ja ic p Log Model Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . live chat . Live Chat Init Request Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . live chat . exceptions . No Operator Channel Configured Exception Ċ import Ġcom . just ai . ja ic f . channel . ja ic p . live chat . exceptions . No Operators Online Exception Ċ import Ġcom . just ai . ja ic f . helpers . logging . With Logger Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . features .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . http .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ internal Ġclass ĠChat Adapter Connector ( ĊĠĠĠ Ġval ĠaccessToken : ĠString , ĊĠĠĠ Ġval Ġurl : ĠString Ġ= ĠDEFAULT _ PROXY _ URL , ĊĠĠĠ Ġprivate Ġval ĠhttpClient : ĠHttpClient Ċ ) Ġ: ĠWith Logger , ĠJ aic p Live Chat Provider Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠbaseUrl Ġ= Ġ"$ url / rest api / external - bot /$ accessToken " ĊĊĠĠĠ Ġfun Ġlist Channels (): ĠList < Channel Config > Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient . get ("$ baseUrl / channels ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClient RequestException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġerror (" Invalid Ġaccess Ġtoken : Ġ$ e ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġprocess Log Async ( log Model : ĠJ aic p Log Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient . post < String >(" $ baseUrl / process Logs ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType ( ContentType . Application . Json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġlog Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Failed Ġto Ġproduce Ġlogs Ġto ĠJ A IC P ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Live Chat ( live Chat Init Request : ĠLive Chat Init Request ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient . post < String >(" $ baseUrl / init Live Chat Switch ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġlive Chat Init Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType ( ContentType . Application . Json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClient RequestException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( e . response . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . NotFound Ġ-> Ġthrow ĠNo Operators Online Exception ( live Chat Init Request . request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . BadRequest Ġ-> Ġthrow ĠNo Operator Channel Configured Exception ( live Chat Init Request . request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }