package Ġdev . k ord . rest . builder . interaction Ċ Ċ import Ġdev . k ord . common . annotation . K ord Dsl Ċ import Ġdev . k ord . common . annotation . K ord Preview Ċ import Ġdev . k ord . common . entity . Allowed Ment ions Ċ import Ġdev . k ord . common . entity . optional . Optional Ċ import Ġdev . k ord . common . entity . optional . Optional Boolean Ċ import Ġdev . k ord . common . entity . optional . delegate . delegate Ċ import Ġdev . k ord . common . entity . optional . map Ċ import Ġdev . k ord . common . entity . optional . map List Ċ import Ġdev . k ord . rest . builder . RequestBuilder Ċ import Ġdev . k ord . rest . builder . message . Allowed Ment ions Builder Ċ import Ġdev . k ord . rest . builder . message . Embed Builder Ċ import Ġdev . k ord . rest . json . request .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . io . InputStream Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . contracts . Experimental Contracts Ċ import Ġkotlin . contracts . Invocation Kind Ċ import Ġkotlin . contracts . contract Ċ Ċ @ K ord Preview Ċ @ K ord Dsl Ċ class ĠPublic Follow up Message Modify Builder Ġ: ĊĠĠĠ ĠRequest Builder < Multipart Follow up Message Modify Request > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ content : ĠOptional < String > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġcontent : ĠString ? Ġby Ġ:: _ content . delegate () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ embed s : ĠOptional < Mutable List < Embed Builder >> Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġembed s : ĠMutable List < Embed Builder >? Ġby Ġ:: _ embed s . delegate () ĊĊĠĠĠ Ġval Ġfiles : ĠMutable List < Pair < String , ĠInputStream >> Ġ= Ġmutable ListOf () ĊĊĊĠĠĠ Ġprivate Ġvar Ġ_ allowed Ment ions : ĠOptional < Allowed Ment ions Builder > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġallowed Ment ions : ĠAllowed Ment ions Builder ? Ġby Ġ:: _ allowed Ment ions . delegate () ĊĊĠĠĠ Ġ@ Opt In ( Experimental Contracts :: class ) ĊĠĠĠ Ġinline Ġfun Ġembed ( builder : ĠEmbed Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ Ġcalls In Place ( builder , ĠInvocation Kind . EX ACT LY _ ON CE ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( embed s Ġ== Ġnull ) Ġembed s Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġembed s !! Ġ+= ĠEmbed Builder (). apply ( builder ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġadd File ( name : ĠString , Ġcontent : ĠInputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfiles Ġ+= Ġname Ġto Ġcontent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġadd File ( path : ĠPath ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd File ( path . fileName . toString (), ĠFiles . new InputStream ( path )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConfig ures Ġthe Ġmentions Ġthat Ġshould Ġtrigger Ġa Ġmention Ġ( aka Ġping ). ĠNot Ġcalling Ġthis Ġfunction Ġwill Ġresult Ġin Ġthe Ġdefault Ġbehavior ĊĠĠĠĠ Ġ* Ġ( ping Ġeverything ), Ġcalling Ġthis Ġfunction Ġbut Ġnot Ġconfiguring Ġit Ġbefore Ġthe Ġrequest Ġis Ġbuild Ġwill Ġresult Ġin Ġall ĊĠĠĠĠ Ġ* Ġp ings Ġbeing Ġignored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Opt In ( Experimental Contracts :: class ) ĊĠĠĠ Ġinline Ġfun Ġallowed Ment ions ( block : ĠAllowed Ment ions Builder . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ Ġcalls In Place ( block , ĠInvocation Kind . EX ACT LY _ ON CE ) Ġ} ĊĠĠĠĠĠĠĠ Ġallowed Ment ions Ġ= Ġ( allowed Ment ions Ġ?: ĠAllowed Ment ions Builder ()). apply ( block ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġto Request (): ĠMultip art Follow up Message Modify Request Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMultip art Follow up Message Modify Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFollow up Message Modify Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ content , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ embed s . map List Ġ{ Ġit . to Request () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ allowed Ment ions . map Ġ{ Ġit . build () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ K ord Preview Ċ @ K ord Dsl Ċ class ĠEp hemeral Follow up Message Modify Builder Ġ: ĊĠĠĠ ĠRequest Builder < Follow up Message Modify Request > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ content : ĠOptional < String > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġcontent : ĠString ? Ġby Ġ:: _ content . delegate () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ embed s : ĠOptional < Mutable List < Embed Builder >> Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġembed s : ĠMutable List < Embed Builder >? Ġby Ġ:: _ embed s . delegate () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ allowed Ment ions : ĠOptional < Allowed Ment ions Builder > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġallowed Ment ions : ĠAllowed Ment ions Builder ? Ġby Ġ:: _ allowed Ment ions . delegate () ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConfig ures Ġthe Ġmentions Ġthat Ġshould Ġtrigger Ġa Ġmention Ġ( aka Ġping ). ĠNot Ġcalling Ġthis Ġfunction Ġwill Ġresult Ġin Ġthe Ġdefault Ġbehavior ĊĠĠĠĠ Ġ* Ġ( ping Ġeverything ), Ġcalling Ġthis Ġfunction Ġbut Ġnot Ġconfiguring Ġit Ġbefore Ġthe Ġrequest Ġis Ġbuild Ġwill Ġresult Ġin Ġall ĊĠĠĠĠ Ġ* Ġp ings Ġbeing Ġignored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Opt In ( Experimental Contracts :: class ) ĊĠĠĠ Ġinline Ġfun Ġallowed Ment ions ( block : ĠAllowed Ment ions Builder . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ Ġcalls In Place ( block , ĠInvocation Kind . EX ACT LY _ ON CE ) Ġ} ĊĠĠĠĠĠĠĠ Ġallowed Ment ions Ġ= Ġ( allowed Ment ions Ġ?: ĠAllowed Ment ions Builder ()). apply ( block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Request (): ĠFollow up Message Modify Request Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFollow up Message Modify Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ_ content , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallowed Ment ions Ġ= Ġ_ allowed Ment ions . map Ġ{ Ġit . build () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ K ord Preview Ċ @ K ord Dsl Ċ class ĠPublic Follow up Message Create Builder Ġ: ĠRequest Builder < Multipart Follow up Message CreateRequest > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ content : ĠOptional < String > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġcontent : ĠString ? Ġby Ġ:: _ content . delegate () ĊĊĊĠĠĠ Ġprivate Ġvar Ġ_ tts : ĠOptional Boolean Ġ= ĠOptional Boolean . Missing ĊĠĠĠ Ġvar Ġt ts : ĠBoolean ? Ġby Ġ:: _ tts . delegate () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ allowed Ment ions : ĠOptional < Allowed Ment ions > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġallowed Ment ions : ĠAllowed Ment ions ? Ġby Ġ:: _ allowed Ment ions . delegate () ĊĊĠĠĠ Ġval Ġfiles : ĠMutable List < Pair < String , ĠInputStream >> Ġ= Ġmutable ListOf () ĊĠĠĠ Ġvar Ġembed s : ĠMutable List < Embed Request > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġfun Ġadd File ( name : ĠString , Ġcontent : ĠInputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfiles Ġ+= Ġname Ġto Ġcontent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġadd File ( path : ĠPath ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd File ( path . fileName . toString (), ĠFiles . new InputStream ( path )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Contracts :: class ) ĊĠĠĠ Ġinline Ġfun Ġembed ( builder : ĠEmbed Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls In Place ( builder , ĠInvocation Kind . EX ACT LY _ ON CE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġembed s . add ( Embed Builder (). apply ( builder ). to Request ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Request (): ĠMultip art Follow up Message CreateRequest Ġ= ĊĠĠĠĠĠĠĠ ĠMultip art Follow up Message CreateRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFollow up Message CreateRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ_ content , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts Ġ= Ġ_ tts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġembed s Ġ= ĠOptional . missing On Empty ( embed s ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallowed Ment ions Ġ= Ġ_ allowed Ment ions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles , ĊĠĠĠĠĠĠĠ Ġ) Ċ Ċ } ĊĊ Ċ @ K ord Preview Ċ @ K ord Dsl Ċ class ĠEp hemeral Follow up Message Create Builder ( var Ġcontent : ĠString ) Ġ: ĊĠĠĠ ĠRequest Builder < Multipart Follow up Message CreateRequest > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ tts : ĠOptional Boolean Ġ= ĠOptional Boolean . Missing ĊĠĠĠ Ġvar Ġt ts : ĠBoolean ? Ġby Ġ:: _ tts . delegate () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ allowed Ment ions : ĠOptional < Allowed Ment ions > Ġ= ĠOptional . Missing () ĊĠĠĠ Ġvar Ġallowed Ment ions : ĠAllowed Ment ions ? Ġby Ġ:: _ allowed Ment ions . delegate () ĊĊĠĠĠ Ġoverride Ġfun Ġto Request (): ĠMultip art Follow up Message CreateRequest Ġ= ĊĠĠĠĠĠĠĠ ĠMultip art Follow up Message CreateRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFollow up Message CreateRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= ĠOptional . Value ( content ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts Ġ= Ġ_ tts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallowed Ment ions Ġ= Ġ_ allowed Ment ions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) Ċ Ċ } Ċ