// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.auth.oauth;

import java.util.concurrent.CompletableFuture;

abstract class OAuthFlow
{
    private OAuthClient.TokenResponse tokenResponse;
    private final CompletableFuture<OAuthResult> future;
    private OAuthResult result;
    private String errorMessage;
    
    OAuthFlow() {
        this.tokenResponse = null;
        this.future = new CompletableFuture<OAuthResult>();
        this.result = OAuthResult.UNKNOWN;
        this.errorMessage = null;
    }
    
    final void onSuccess(final OAuthClient.TokenResponse tokenResponse) {
        if (this.future.isDone()) {
            return;
        }
        this.tokenResponse = tokenResponse;
        this.result = OAuthResult.SUCCESS;
        this.future.complete(this.result);
    }
    
    final void onFailure(final String errorMessage) {
        if (this.future.isDone()) {
            return;
        }
        this.errorMessage = errorMessage;
        this.result = OAuthResult.FAILED;
    }
    
    public OAuthClient.TokenResponse getTokenResponse() {
        return this.tokenResponse;
    }
    
    public OAuthResult getResult() {
        return this.result;
    }
    
    public String getErrorMessage() {
        return this.errorMessage;
    }
    
    public CompletableFuture<OAuthResult> getFuture() {
        return this.future;
    }
}
