summaryrefslogtreecommitdiff
path: root/core/src/kz/ilotterytea/maxon/utils/GameUpdater.java
blob: 6b7c407b6e2e51bbc49d9992521ca25bc43b69fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package kz.ilotterytea.maxon.utils;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Net;
import com.badlogic.gdx.net.HttpRequestBuilder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import kz.ilotterytea.maxon.MaxonConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;

public class GameUpdater implements Net.HttpResponseListener {
    private final Logger logger = LoggerFactory.getLogger(GameUpdater.class.getName());
    public static boolean CLIENT_IS_ON_LATEST_VERSION;

    public void checkLatestUpdate() {
        Net.HttpRequest request =
                new HttpRequestBuilder()
                        .newRequest()
                        .method(Net.HttpMethods.GET)
                        .url(MaxonConstants.GAME_VERSIONS_FILE_URL)
                        .timeout(5000)
                        .build();

        Gdx.net.sendHttpRequest(request, this);
    }

    @Override
    public void handleHttpResponse(Net.HttpResponse httpResponse) {
        String response = httpResponse.getResultAsString();

        if (response == null) {
            logger.error("Got null in response");
            CLIENT_IS_ON_LATEST_VERSION = true;
            return;
        }

        Gson gson = new Gson();
        ArrayList<GameVersion> versions = gson.fromJson(response, new TypeToken<ArrayList<GameVersion>>(){}.getType());

        try {
            GameVersion latestVersion = versions.get(0);
            CLIENT_IS_ON_LATEST_VERSION = latestVersion.getVersion().equals(MaxonConstants.GAME_VERSION);
        } catch (Exception e) {
            logger.error("Failed to find the latest version");
            CLIENT_IS_ON_LATEST_VERSION = true;
        }
    }

    @Override
    public void failed(Throwable t) {
        logger.error(t.getMessage());
        CLIENT_IS_ON_LATEST_VERSION = true;
    }

    @Override
    public void cancelled() {
        logger.info("Cancelled");
        CLIENT_IS_ON_LATEST_VERSION = true;
    }

    private static class GameVersion {
        private String version;

        public String getVersion() {
            return version;
        }

    }
}