package Ġno . nav . hel se . ar be id sg iver . integr as jon er . p dl Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . http . content .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġno . nav . hel se . ar be id sg iver . integr as jon er . AccessToken Provider Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ interface ĠP dl Client Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIdent Ġkan Ġv Ã¦ re Ġent en ĠF NR Ġeller ĠA kt Ã¸ r ID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġperson Nav n ( ident : ĠString ): ĠP dl H ent Person Nav n . P dl Person Nav nel iste ? ĊĠĠĠ Ġfun Ġfull Person ( ident : ĠString ): ĠP dl H ent Full Person ? Ċ } Ċ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġen ĠP DL - k lient Ġsom Ġhar Ġen Ġinn log get Ġs aks be handler . Ċ Ġ* ĠN Ã¥r Ġden ne Ġbru kes Ġg j Ã¸ r ĠP DL Ġen Ġs je kk Ġav Ġat Ġbru ker en Ġhar Ġtil gang Ġtil ĠÃ¥ Ġse Ġinform as jon Ġom Ġident en Ċ Ġ* Ġdet Ġsp Ã¸ r res Ġom Ċ Ġ*/ Ċ interface ĠLog ged In P dl Client Ġ{ ĊĠĠĠ Ġfun Ġperson Nav n ( ident : ĠString , Ġuser Login Token : ĠString ): ĠP dl H ent Person Nav n . P dl Person Nav nel iste ? ĊĠĠĠ Ġfun Ġfull Person ( ident : ĠString , Ġuser Login Token : ĠString ): ĠP dl H ent Full Person ? Ċ } Ċ Ċ /** Ċ Ġ* ĠEn kel ĠGraphQL - k lient Ġfor ĠP DL Ġsom Ġkan Ġent en Ġh ente Ġnav n Ġf ra Ġakt Ã¸ r Ġeller Ġfn r Ġ( ident ) Ċ Ġ* Ġeller Ġh ente Ġmer Ġfull st end ig Ġdata Ġom Ġen Ġperson Ġvia Ġfn r Ġeller Ġakt Ã¸ rid Ġ( ident ) Ċ Ġ* Ċ Ġ* ĠAuthor is as jon Ġg j Ã¸ res Ġvia Ġden Ġgit te ĠToken Ġprod vider en , Ġog Ġservice br uk eren Ġsom Ġer Ġan git t Ġi Ġtoken Ġprovider en ĠmÃ¥ Ġv Ã¦ re Ġi Ċ Ġ* Ġi ĠAD - grup pen Ġ 0 0 0 0 - GA - TE MA _ SY K Ġsom Ġdokument ert Ġher Ċ Ġ* Ġhttps :// nav ik t . github . io / p dl / index - intern . html #_ k ons ument roller _ bas ert _ p % C 3 % A 5 _ t ema Ċ Ġ* Ċ Ġ* ĠK lient en Ġv il Ġall tid Ġgi ĠP DL - T ema et Ġ' SY K ', Ġs Ã¥ Ġom Ġdu Ġt ren ger Ġet Ġan net Ġt ema ĠmÃ¥ Ġdu Ġend re Ġden ne Ġklient en . Ċ Ġ*/ Ċ class ĠP dl Client Impl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġp dl Url : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġst s Client : ĠAccess Token Provider , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠhttpClient : ĠHttpClient , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġom : ĠObjectMapper Ċ ) Ġ: ĠP dl Client , ĠLog ged In P dl Client Ġ{ ĊĠĠĠ Ġprivate Ġval Ġperson Nav n Query Ġ= Ġthis :: class . java . getResource ("/ p dl / h ent Person Nav n . graphql "). read Text (). replace ( Regex ("[ \ n \ r ] "), Ġ"") ĊĠĠĠ Ġprivate Ġval Ġfull Person Query Ġ= Ġthis :: class . java . getResource ("/ p dl / h ent Full Person . graphql "). read Text (). replace ( Regex ("[ \ n \ r ] "), Ġ"") ĊĊĊĠĠĠ Ġoverride Ġfun Ġperson Nav n ( ident : ĠString ): ĠP dl H ent Person Nav n . P dl Person Nav nel iste ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠP dl Query Object ( person Nav n Query , ĠVariables ( ident )) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġquery P dl < P dl H ent Person Nav n ?, ĠP dl Response < P dl H ent Person Nav n ?> >( entity ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ?. h ent Person ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfull Person ( ident : ĠString ): ĠP dl H ent Full Person ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Object Ġ= ĠP dl Query Object ( full Person Query , ĠVariables ( ident )) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġquery P dl < P dl H ent Full Person ?, ĠP dl Response < P dl H ent Full Person ?> >( query Object ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperson Nav n ( ident : ĠString , Ġuser Login Token : ĠString ): ĠP dl H ent Person Nav n . P dl Person Nav nel iste ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠP dl Query Object ( person Nav n Query , ĠVariables ( ident )) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġquery P dl < P dl H ent Person Nav n ?, ĠP dl Response < P dl H ent Person Nav n ?> >( entity , Ġuser Login Token ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ?. h ent Person ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfull Person ( ident : ĠString , Ġuser Login Token : ĠString ): ĠP dl H ent Full Person ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Object Ġ= ĠP dl Query Object ( full Person Query , ĠVariables ( ident )) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġquery P dl < P dl H ent Full Person ?, ĠP dl Response < P dl H ent Full Person ?> >( query Object , Ġuser Login Token ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< K , Ġre ified ĠT : ĠP dl Response < K >> Ġquery P dl ( graphql Query : ĠP dl Query Object , Ġlogged In User Token : ĠString ? Ġ= Ġnull ): ĠK ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġst s Token Ġ= Ġst s Client . getToken () ĊĠĠĠĠĠĠĠ Ġval Ġp dl Person Re ponse Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient . post < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl ( p dl Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= ĠText Content ( om . writeValue AsString ( graphql Query ), ĠcontentType Ġ= ĠContentType . Application . Json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" T ema ", Ġ" SY K ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Authorization ", Ġ" Bearer Ġ${ logged In User Token ?: Ġst s Token }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Nav - Consumer - Token ", Ġ" Bearer Ġ$ sts Token ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( p dl Person Re ponse . errors Ġ!= Ġnull Ġ&& Ġp dl Person Re ponse . errors !!. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP dl Exception ( p dl Person Re ponse . errors ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġp dl Person Re ponse . data ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger ( P dl Client :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠP dl Exception ( val Ġp dl Errors : ĠList < P dl Error > ?) Ġ: ĠRuntimeException () Ċ }