package Ġcom . ba ul supp . ok url . services . survey monkey Ċ Ċ import Ġcom . ba ul supp . ok social . output . handler . Output Handler Ċ import Ġcom . ba ul supp . ok url . auth enticator . Simple WebServer Ċ import Ġcom . ba ul supp . ok url . auth enticator . oauth 2 . Oauth 2 Token Ċ import Ġcom . ba ul supp . ok url . credentials . No Token Ċ import Ġcom . ba ul supp . ok url . kotlin . query Ċ import Ġcom . ba ul supp . ok url . kotlin . request Builder Ċ import Ġcom . ba ul supp . ok url . services . survey monkey . model . Token Response Ċ import Ġokhttp 3 . Form Body Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Response Ċ Ċ object ĠSurvey Mon key Auth Flow Ġ{ ĊĠ Ġsuspend Ġfun Ġlogin ( ĊĠĠĠ Ġclient : ĠOk HttpClient , ĊĠĠĠ Ġoutput Handler : ĠOutput Handler < Response >, ĊĠĠĠ ĠclientId : ĠString , ĊĠĠĠ Ġclient Secret : ĠString ĊĠ Ġ): ĠO auth 2 Token Ġ{ ĊĠĠĠ ĠSimple WebServer . for Code (). use Ġ{ Ġs Ġ-> ĊĠĠĠĠĠ Ġval Ġredirect Uri Ġ= Ġs . redirect Uri ĊĊĠĠĠĠĠ Ġval Ġlogin Url Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// api . survey monkey . net / oauth / authorize ? response _ type = code & client _ id =$ clientId & redirect _ uri =$ redirect Uri " ĊĊĠĠĠĠĠ Ġoutput Handler . open Link ( login Url ) ĊĊĠĠĠĠĠ Ġval Ġcode Ġ= Ġs . waitFor Code () ĊĊĠĠĠĠĠ Ġval Ġbody Ġ= ĠForm Body . Builder (). add (" client _ secret ", Ġclient Secret ) ĊĠĠĠĠĠĠĠ Ġ. add (" client _ id ", ĠclientId ) ĊĠĠĠĠĠĠĠ Ġ. add (" code ", Ġcode ) ĊĠĠĠĠĠĠĠ Ġ. add (" redirect _ uri ", Ġredirect Uri ) ĊĠĠĠĠĠĠĠ Ġ. add (" grant _ type ", Ġ" authorization _ code ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Builder ( ĊĠĠĠĠĠĠĠ Ġ" https :// api . survey monkey . net / oauth / token ", ĊĠĠĠĠĠĠĠ ĠNo Token ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. post ( body ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . query < Token Response >( request ) ĊĊĠĠĠĠĠ Ġreturn ĠO auth 2 Token ( response . access _ token ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ