package Ġes . na ut ic apps . spot y media . datal ayer . auth ĊĊĊĊ Ċ import Ġokhttp 3 . Authenticator Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . Route ĊĊĊĊ Ċ class ĠRefresh Token Authenticate : ĠAuth enticator Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġservice : ĠSpot y Service Auth ĊĊĠĠĠ Ġoverride Ġfun Ġauthenticate ( route : ĠRoute ?, Ġresponse : ĠResponse ): ĠRequest ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġrefresh Token () ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . request . newBuilder (). header (" Authorization ", Ġ" Bearer Ġ$ token "). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Token (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: service . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy service Ġ= Ġservice . refresh Token (" client _ credentials ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġmy service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtoken . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊĊ