/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 / 2 0 2 1 Ġe - voy age urs Ġtechnologies Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġai . to ck . bot . connector . google chat Ċ Ċ import Ġai . to ck . bot . connector . Connector Ċ import Ġai . to ck . bot . connector . Connector Configuration Ċ import Ġai . to ck . bot . connector . Connector Message Ċ import Ġai . to ck . bot . connector . Connector Provider Ċ import Ġai . to ck . bot . connector . Connector Type Ċ import Ġai . to ck . bot . connector . Connector Type Configuration Ċ import Ġai . to ck . bot . connector . Connector Type Configuration Field Ċ import Ġai . to ck . bot . connector . google chat . builder . google Chat Connector Type Ċ import Ġai . to ck . shared . resource AsStream Ċ import Ġai . to ck . shared . resource AsString Ċ import Ġcom . google . api . client . googleapis . jav an et . Google Net Http Transport Ċ import Ġcom . google . api . client . http . HttpRequest Initializer Ċ import Ġcom . google . api . client . json . jackson 2 . Jack son Factory Ċ import Ġcom . google . api . services . chat . v 1 . Hang outs Chat Ċ import Ġcom . google . auth . http . Http Credentials Adapter Ċ import Ġcom . google . auth . oauth 2 . Google Credentials Ċ import Ġcom . google . auth . oauth 2 . ServiceAccount Credentials Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . InputStream Ċ import Ġkotlin . reflect . K Class Ċ Ċ private Ġconst Ġval ĠCH AT _ SCOPE Ġ= Ġ" https :// www . googleapis . com / auth / chat . bot " Ċ private Ġconst Ġval ĠSERVICE _ CRED ENTIAL _ PATH _ PARAMETER Ġ= Ġ" service Credential Path " Ċ private Ġconst Ġval ĠSERVICE _ CRED ENTIAL _ CONTENT _ PARAMETER Ġ= Ġ" service Credential Content " Ċ private Ġconst Ġval ĠBOT _ PROJECT _ NUMBER _ PARAMETER Ġ= Ġ" bot Project Number " Ċ Ċ internal Ġobject ĠGoogle Chat Connector Provider Ġ: ĠConnector Provider Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġconnector Type : ĠConnector Type Ġget () Ġ= Ġgoogle Chat Connector Type ĊĊĠĠĠ Ġoverride Ġfun Ġconnector ( connector Configuration : ĠConnector Configuration ): ĠConnector Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( connector Configuration ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential InputStream Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnector Configuration . parameters [ SERVICE _ CRED ENTIAL _ PATH _ PARAMETER ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġresource AsStream ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġconnector Configuration . parameters [ SERVICE _ CRED ENTIAL _ CONTENT _ PARAMETER ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠByteArrayInputStream ( it . toByteArray ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Service Ġcredential Ġmissing Ġ: Ġeither Ġ$ SERVICE _ CRED ENTIAL _ PATH _ PARAMETER Ġor Ġ$ SERVICE _ CRED ENTIAL _ CONTENT _ PARAMETER Ġmust Ġbe Ġprovided ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Initializer : ĠHttpRequest Initializer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Credentials Adapter ( load Credentials ( credential InputStream )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Service Ġ= ĠH ang outs Chat . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Net Http Transport . new Trusted Transport (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJack son Factory . getDefaultInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Initializer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Application Name ( connector Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor isation Handler Ġ= ĠGoogle Chat Author isation Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnector Configuration . parameters [ BOT _ PROJECT _ NUMBER _ PARAMETER ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Parameter ĠBot Ġproject Ġnumber Ġnot Ġpresent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGoogle Chat Connector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnector Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor isation Handler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Credentials ( inputStream : ĠInputStream ): ĠGoogle Credentials Ġ= ĊĠĠĠĠĠĠĠ ĠService Account Credentials ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from Stream ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Scoped ( CHAT _ SCOPE ) ĊĊĠĠĠ Ġoverride Ġfun Ġconfiguration (): ĠConnector Type Configuration Ġ= ĊĠĠĠĠĠĠĠ ĠConnector Type Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Chat Connector Type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnector Type Configuration Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bot Ġproject Ġnumber Ġ( application ĠID Ġin Ġgoogle Ġhang outs Ġconfiguration Ġpage )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBOT _ PROJECT _ NUMBER _ PARAMETER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnector Type Configuration Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Service Ġaccount Ġcredential Ġfile Ġpath Ġ( default Ġ: Ġ/ service - account -{ connector Id }. json )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSERVICE _ CRED ENTIAL _ PATH _ PARAMETER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnector Type Configuration Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Service Ġaccount Ġcredential Ġjson Ġcontent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSERVICE _ CRED ENTIAL _ CONTENT _ PARAMETER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsvg Icon Ġ= Ġresource AsString ("/ google _ chat . svg ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġval Ġsupported Response Connector Message Types : ĠSet < K Class < out ĠConnector Message >> Ġ= ĊĠĠĠĠĠĠĠ Ġset Of ( Google Chat Connector Text Message Out :: class ) Ċ } Ċ Ċ internal Ġclass ĠGoogle Chat Connector Provider Service Ġ: ĠConnector Provider Ġby ĠGoogle Chat Connector Provider Ċ