Package com.skcraft.launcher.selfupdate

Source Code of com.skcraft.launcher.selfupdate.UpdateChecker

/*
* SK's Minecraft Launcher
* Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
* Please see LICENSE.txt for license information.
*/

package com.skcraft.launcher.selfupdate;

import com.skcraft.launcher.Launcher;
import com.skcraft.launcher.LauncherException;
import com.skcraft.launcher.util.HttpRequest;
import lombok.NonNull;
import lombok.extern.java.Log;

import java.net.URL;
import java.util.concurrent.Callable;

import static com.skcraft.launcher.util.SharedLocale._;

/**
* A worker that checks for an update to the launcher. A URL is returned
* if there is an update to be downloaded.
*/
@Log
public class UpdateChecker implements Callable<URL> {

    private final Launcher launcher;

    public UpdateChecker(@NonNull Launcher launcher) {
        this.launcher = launcher;
    }

    @Override
    public URL call() throws Exception {
        try {
            UpdateChecker.log.info("Checking for update...");

            URL url = HttpRequest.url(launcher.getProperties().getProperty("selfUpdateUrl"));

            LatestVersionInfo versionInfo = HttpRequest.get(url)
                    .execute()
                    .expectResponseCode(200)
                    .returnContent()
                    .asJson(LatestVersionInfo.class);

            ComparableVersion current = new ComparableVersion(launcher.getVersion());
            ComparableVersion latest = new ComparableVersion(versionInfo.getVersion());

            UpdateChecker.log.info("Latest version is " + latest + ", while current is " + current);

            if (latest.compareTo(current) >= 1) {
                UpdateChecker.log.info("Update available at " + versionInfo.getUrl());
                return versionInfo.getUrl();
            } else {
                UpdateChecker.log.info("No update required.");
                return null;
            }
        } catch (Exception e) {
            throw new LauncherException(e, _("errors.selfUpdateCheckError"));
        }
    }

}
TOP

Related Classes of com.skcraft.launcher.selfupdate.UpdateChecker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.