package Ġno . nav . hel se . ar be id sg iver . integr as jon er . alt inn Ċ Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . features .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . http .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġno . nav . hel se . ar be id sg iver . web . auth . Alt inn Organ isations Repository Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . time . Duration Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . util . concurrent . Cancellation Exception Ċ Ċ /** Ċ Ġ* ĠK lient Ġsom Ġben yt ter ĠAlt in ns ĠREST ĠAPI Ġfor ĠÃ¥ Ġh ente Ġorgan is as jon er Ġsom Ġen Ġgit t Ġbru ker Ġhar Ġtil gang Ġtil Ġfor Ġden Ġgit te Ġt jen est en . Ċ Ġ* Ċ Ġ* ĠD okument as jon Ġher : Ġhttps :// www . alt inn . no / api / service owner / help Ċ Ġ* Ċ Ġ* ĠFor ĠÃ¥ Ġf Ã¥ Ġtil gang Ġtil Ġdet te ĠAPI et ĠmÃ¥ Ġdet Ġset tes Ġopp Ġtil gang Ġg j enn om ĠAPI - Gateway Ġtil Ġt jen est en Ġ( vi Ġg Ã¥r Ġik ke Ġmot Ġden Ġoff es iel le ĠAlt inn ĠURL en ). Ċ Ġ* ĠFor Ġh jel p Ġmed Ġdet te Ġsp Ã¸ r Ġi Ġ# ap ig w Ċ Ġ* Ċ Ġ*/ Ċ class ĠAlt inn RestClient ( ĊĠĠĠĠĠĠĠ Ġalt inn BaseUrl : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi Gw ApiKey : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġalt inn ApiKey : ĠString , ĊĠĠĠĠĠĠĠ Ġservice Code : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠhttpClient : ĠHttpClient , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠpageSize : ĠInt Ġ= Ġ 5 0 0 ) Ġ: ĠAlt inn Organ isations Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger : Ġorg . slf 4 j . Logger Ġ= ĠLoggerFactory . getLogger (" Alt inn Client ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (""" Alt inn ĠConfig : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalt inn BaseUrl : Ġ$ alt inn BaseUrl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Gw ApiKey : Ġ${ api Gw ApiKey . take ( 1 )} ..... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalt inn ApiKey : Ġ${ alt inn ApiKey . take ( 1 )} ..... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Code : Ġ$ service Code ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠbaseUrl Ġ= Ġ"$ alt inn BaseUrl / report ees /? Force EI Authentication &\ $ filter = Type + ne +' Person '+ and + Status + eq +' Active '& service Code =$ service Code & service Edition = 1 && subject =" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġen Ġliste Ġover Ġorgan is as jon er Ġog / eller Ġperson er Ġden Ġan git te Ġperson en Ġhar Ġret tig he ten Ġfor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġh ent Org Med Ret tig heter For Person ( ident it ets nummer : ĠString ): ĠSet < Alt inn Organ is as jon > Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" H enter Ġorgan is as jon er Ġfor Ġ${ ident it ets nummer . take ( 5 )} XX XXX ") ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠbaseUrl Ġ+ Ġident it ets nummer ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Access Rights Ġ= ĠHashSet < Alt inn Organ is as jon >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpage Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl With Page size And Offset Ġ= Ġurl Ġ+ Ġ"& \$ top =" Ġ+ ĠpageSize Ġ+ Ġ"& \$ skip =" Ġ+ Ġpage Ġ* ĠpageSize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Results Ġ= ĠhttpClient . get < Set < Alt inn Organ is as jon >>( url With Page size And Offset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . append (" X - NAV - API KEY ", Ġapi Gw ApiKey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . append (" API KEY ", Ġalt inn ApiKey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Access Rights . addAll ( page Results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile ( page Results . size Ġ>= ĠpageSize ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Alt inn Ġbru k te Ġ${ Duration . between ( start , ĠLocalDateTime . now ()). to Millis ()} ms ĠpÃ¥ ĠÃ¥ Ġsv are Ġmed Ġ${ all Access Rights . size } Ġret tig heter ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run Blocking Ġall Access Rights ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠServer Response Exception Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmid l ert id ig Ġhook Ġfor ĠÃ¥ Ġde tek ter e Ġat Ġdet Ġtok Ġfor Ġlang Ġtid ĠÃ¥ Ġh ente Ġret tig heter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbru ker en / k lient en Ġkan Ġpr Ã¸ ve Ġig jen Ġn Ã¥r Ġdet te Ġsk jer Ġs iden Ġalt inn Ġs var er Ġr ask ere Ġg ang Ġnum mer Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ex . response !!. status Ġ== ĠHttpStatusCode . Bad Gateway ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" F ikk Ġen Ġtimeout Ġf ra ĠAlt inn Ġsom Ġvi Ġan tar Ġer Ġf iks bar Ġl agg Ġh os Ġdem ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAlt inn B ru k te For Lang Tid Exception () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthrow Ġex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC ancellation Exception Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" F ikk Ġen Ġtimeout Ġf ra ĠAlt inn Ġsom Ġvi Ġan tar Ġer Ġf iks bar Ġl agg Ġh os Ġdem ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAlt inn B ru k te For Lang Tid Exception () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAlt inn B ru k te For Lang Tid Exception Ġ: ĠException ( ĊĠĠĠĠĠĠĠ Ġ" Alt inn Ġbru k te Ġfor Ġlang Ġtid Ġtil ĠÃ¥ Ġsv are ĠpÃ¥ Ġfore sp Ã¸ r se len Ġom Ġtil g anger . ĠPr Ã¸ v Ġig jen Ġom Ġl itt ." Ċ )