package Ġno . nav . security . mock . oauth 2 . test utils Ċ Ċ import Ġcom . nim bus ds . oauth 2 . sdk . pk ce . Code Challenge Ċ import Ġcom . nim bus ds . oauth 2 . sdk . pk ce . Code Challenge Method Ċ import Ġcom . nim bus ds . oauth 2 . sdk . pk ce . Code Verifier Ċ import Ġokhttp 3 . Http Url Ċ Ċ fun ĠHttp Url . authentication Request ( ĊĠĠĠ ĠclientId : ĠString Ġ= Ġ" def aut l Client ", ĊĠĠĠ Ġredirect Uri : ĠString Ġ= Ġ" http :// default Redirect Uri ", ĊĠĠĠ Ġscope : ĠList < String > Ġ= ĠlistOf (" openid "), ĊĠĠĠ Ġresponse Type : ĠString Ġ= Ġ" code ", ĊĠĠĠ Ġresponse Mode : ĠString Ġ= Ġ" query ", ĊĠĠĠ Ġstate : ĠString Ġ= Ġ" 1 2 3 4 ", ĊĠĠĠ Ġnonce : ĠString Ġ= Ġ" 5 6 7 8 ", ĊĠĠĠ Ġpk ce : ĠP k ce ? Ġ= Ġnull Ċ ): ĠHttp Url Ġ= ĠnewBuilder () ĊĠĠĠ Ġ. add QueryParameter (" client _ id ", ĠclientId ) ĊĠĠĠ Ġ. add QueryParameter (" response _ type ", Ġresponse Type ) ĊĠĠĠ Ġ. add QueryParameter (" redirect _ uri ", Ġredirect Uri ) ĊĠĠĠ Ġ. add QueryParameter (" response _ mode ", Ġresponse Mode ) ĊĠĠĠ Ġ. add QueryParameter (" scope ", Ġscope . join ToString (" Ġ")) ĊĠĠĠ Ġ. add QueryParameter (" state ", Ġstate ) ĊĠĠĠ Ġ. add QueryParameter (" nonce ", Ġnonce ) ĊĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pk ce Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd QueryParameter (" code _ challenge ", Ġpk ce . challenge . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd QueryParameter (" code _ challenge _ method ", Ġpk ce . method . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ. build () Ċ Ċ data Ġclass ĠP k ce ( ĊĠĠĠ Ġval Ġverifier : ĠCode Verifier Ġ= ĠCode Verifier (), ĊĠĠĠ Ġval Ġmethod : ĠCode Challenge Method Ġ= ĠCode Challenge Method . S 2 5 6 Ċ ) Ġ{ ĊĠĠĠ Ġval Ġchallenge : ĠCode Challenge Ġ= ĠCode Challenge . compute ( method , Ġverifier ) Ċ } Ċ