package Ġio . jav al in . plugin . graphql Ċ Ċ import Ġio . jav al in . plugin . graphql . graphql . GraphQL Run Ċ import Ġio . jav al in . websocket . Ws Message Context Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ class ĠGraphQL Handler ( private Ġval Ġgraph QL Builder : ĠGraphQL Plugin Builder <* >) Ġ{ ĊĊĊĠĠĠ Ġfun Ġexecute ( ctx : ĠW s Message Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġctx . message As Class ( Map :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġbody . get (" query "). toString () ĊĠĠĠĠĠĠĠ Ġval Ġvariables : ĠMap < String , ĠAny > Ġ= Ġget Variables ( body ) ĊĠĠĠĠĠĠĠ Ġval Ġoperation Name Ġ= Ġbody . get (" operation Name ") ?. toString () ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrun Blocking Ġ{ Ġgraph QL Builder . context Ws Factory . generate Context ( ctx ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠGraphQL Run ( graph QL Builder . getSchema ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Query ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variables ( variables ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Operation Name ( operation Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Context ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Subscriber GraphQL ( ctx )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Variables ( body : ĠMap < *, Ġ* >) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( body [" variables "] Ġ== Ġnull ) Ġempty Map () Ġelse Ġbody [" variables "] Ġas ĠMap < String , ĠAny > Ċ Ċ } Ċ