package Ġdk . nodes . okhttp utils . oauth Ċ Ċ import Ġdk . nodes . okhttp utils . oauth . entities . OAuth Header Ċ import Ġdk . nodes . okhttp utils . oauth . entities . OAuth Result Ċ import Ġokhttp 3 . Authenticator Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . Route Ċ Ċ class ĠOAuth Authenticator ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrepository : ĠOAuth Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : ĠOAuth Callback , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġheader : ĠOAuth Header Ċ ) Ġ: ĠAuth enticator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġauthenticate ( route : ĠRoute ?, Ġresponse : ĠResponse ): ĠRequest ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( response . code Ġ== Ġ 4 0 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . request . apply OAuth Info () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . request ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRequest . apply OAuth Info (): ĠRequest ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrefresh Token Ġ= Ġrepository . get RefreshToken () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= Ġcallback . provide Auth Info ( refresh Token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOAuth Result . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOAuth Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . set AccessToken ( result . value . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . set RefreshToken ( result . value . refresh Token ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( header . name , Ġheader . value ( result . value . accessToken )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ