Newer
Older
KeeperJerry_Launcher / LaunchServer / source / auth / handler / DelegateAuthHandler.java
@KeeperJerry KeeperJerry on 27 Jun 2020 1 KB Рефактор кода
package launchserver.auth.handler;

import launcher.LauncherAPI;
import launcher.helper.VerifyHelper;
import launcher.serialize.config.entry.BlockConfigEntry;
import launchserver.auth.provider.AuthProviderResult;

import java.io.IOException;
import java.util.Objects;
import java.util.UUID;

public class DelegateAuthHandler extends AuthHandler
{
    private volatile AuthHandler delegate;

    DelegateAuthHandler(BlockConfigEntry block)
    {
        super(block);
    }

    @Override
    public UUID auth(AuthProviderResult authResult) throws IOException
    {
        return getDelegate().auth(authResult);
    }

    @Override
    public UUID checkServer(String username, String serverID) throws IOException
    {
        return getDelegate().checkServer(username, serverID);
    }

    @Override
    public void close() throws IOException
    {
        AuthHandler delegate = this.delegate;
        if (delegate != null)
        {
            delegate.close();
        }
    }

    @Override
    public boolean joinServer(String username, String accessToken, String serverID) throws IOException
    {
        return getDelegate().joinServer(username, accessToken, serverID);
    }

    @Override
    public UUID usernameToUUID(String username) throws IOException
    {
        return getDelegate().usernameToUUID(username);
    }

    @Override
    public String uuidToUsername(UUID uuid) throws IOException
    {
        return getDelegate().uuidToUsername(uuid);
    }

    private AuthHandler getDelegate()
    {
        return VerifyHelper.verify(delegate, Objects::nonNull, "Delegate auth handler wasn't set");
    }

    @LauncherAPI
    public void setDelegate(AuthHandler delegate)
    {
        this.delegate = delegate;
    }
}