Search in sources :

Example 1 with BaseModule

use of de.notecho.spotify.bot.modules.BaseModule in project spotifybot by NotEchoDE.

the class BotInstance method updateTokens.

private void updateTokens() {
    if (user.spotifyTokens() == null) {
        context.getBean(BotInstanceManagementService.class).stopInstance(user);
        return;
    }
    updateTwitchToken(user.twitchTokens());
    if (user.chatAccountTokens() != null)
        updateTwitchToken(user.chatAccountTokens());
    try {
        this.spotifyApi.setRefreshToken(user.spotifyTokens().getRefreshToken());
        AuthorizationCodeRefreshRequest authorizationCodeRefreshRequest = spotifyApi.authorizationCodeRefresh().build();
        final AuthorizationCodeCredentials authorizationCodeCredentials = authorizationCodeRefreshRequest.execute();
        spotifyApi.setAccessToken(authorizationCodeCredentials.getAccessToken());
        spotifyApi.setRefreshToken(authorizationCodeCredentials.getRefreshToken());
        user.spotifyTokens().setAccessToken(authorizationCodeCredentials.getAccessToken());
        Logger.log(LogType.DEBUG, "[" + user.getId() + "] Got new Spotify Token for " + login + ", expires in: " + authorizationCodeCredentials.getExpiresIn() + " | " + authorizationCodeCredentials.getAccessToken().substring(0, 10) + "...", "Spotify", login, String.valueOf(authorizationCodeCredentials.getExpiresIn()), authorizationCodeCredentials.getAccessToken().substring(0, 10) + "...");
    } catch (BadRequestException e) {
        TokenPair spotifyTokens = user.spotifyTokens();
        user.getTokenPairs().remove(spotifyTokens);
        context.getBean(UserRepository.class).saveAndFlush(user);
        context.getBean(TokenPairRepository.class).delete(spotifyTokens);
        Logger.log(LogType.INFO, "[" + user.getId() + "] " + login + " revoked his access token so it was removed from the database.", login, "revoked", "database");
        for (BaseModule module : this.modules) module.unregister(client);
        client.getChat().leaveChannel(this.login);
        context.getBean(BotInstanceManagementService.class).stopInstance(user);
        return;
    } catch (IOException | SpotifyWebApiException | ParseException e) {
        e.printStackTrace();
    }
    context.getBean(UserRepository.class).saveAndFlush(user);
    nextCheck = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(50);
}
Also used : UserRepository(de.notecho.spotify.database.user.repository.UserRepository) BaseModule(de.notecho.spotify.bot.modules.BaseModule) BadRequestException(se.michaelthelin.spotify.exceptions.detailed.BadRequestException) IOException(java.io.IOException) ParseException(org.apache.hc.core5.http.ParseException) AuthorizationCodeRefreshRequest(se.michaelthelin.spotify.requests.authorization.authorization_code.AuthorizationCodeRefreshRequest) TokenPair(de.notecho.spotify.database.user.entities.TokenPair) BotInstanceManagementService(de.notecho.spotify.bot.BotInstanceManagementService) SpotifyWebApiException(se.michaelthelin.spotify.exceptions.SpotifyWebApiException) AuthorizationCodeCredentials(se.michaelthelin.spotify.model_objects.credentials.AuthorizationCodeCredentials)

Aggregations

BotInstanceManagementService (de.notecho.spotify.bot.BotInstanceManagementService)1 BaseModule (de.notecho.spotify.bot.modules.BaseModule)1 TokenPair (de.notecho.spotify.database.user.entities.TokenPair)1 UserRepository (de.notecho.spotify.database.user.repository.UserRepository)1 IOException (java.io.IOException)1 ParseException (org.apache.hc.core5.http.ParseException)1 SpotifyWebApiException (se.michaelthelin.spotify.exceptions.SpotifyWebApiException)1 BadRequestException (se.michaelthelin.spotify.exceptions.detailed.BadRequestException)1 AuthorizationCodeCredentials (se.michaelthelin.spotify.model_objects.credentials.AuthorizationCodeCredentials)1 AuthorizationCodeRefreshRequest (se.michaelthelin.spotify.requests.authorization.authorization_code.AuthorizationCodeRefreshRequest)1