aboutsummaryrefslogtreecommitdiff
path: root/src/org/happysanta/gd/API/API.java
blob: 8e1ee0d7743873fb54439424902e450b49ea7bfe (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package org.happysanta.gd.API;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import java.io.*;
import java.util.LinkedList;
import java.util.List;

import static org.happysanta.gd.Helpers.getDeviceName;

public class API {

	public static final String URL = "http://gdtr.net/api.php";
	public static final String DEBUG_URL = "http://dev.gdtr.net/api.php";
	public static final String MRG_URL = "http://gdtr.net/mrg/%d.mrg";
	public static final int VERSION = 2;

	public static Request getLevels(int offset, int limit, LevelsSortType sort, ResponseHandler handler)
			throws Exception {
		List<NameValuePair> params = new LinkedList<NameValuePair>();
		params.add(new BasicNameValuePair("sort", sort.toString()));
		params.add(new BasicNameValuePair("offset", String.valueOf(offset)));
		params.add(new BasicNameValuePair("limit", String.valueOf(limit)));

		return new Request("getLevels", params, handler);
	}

	public static Request getNotifications(boolean installedFromAPK, ResponseHandler handler) {
		List<NameValuePair> params = new LinkedList<NameValuePair>();
		params.add(new BasicNameValuePair("apk", String.valueOf(installedFromAPK ? 1 : 0)));
		return new Request("getNotifications", params, handler);
	}

	public static Request sendStats(String statsJSON, String installationID, int useCheats, ResponseHandler handler) {
		List<NameValuePair> params = new LinkedList<NameValuePair>();
		params.add(new BasicNameValuePair("stats", statsJSON));
		params.add(new BasicNameValuePair("id", installationID));
		params.add(new BasicNameValuePair("use_cheats", String.valueOf(useCheats)));
		return new Request("sendStats", params, handler);
	}

	public static Request sendKeyboardLogs(String log, ResponseHandler handler) {
		List<NameValuePair> params = new LinkedList<NameValuePair>();
		params.add(new BasicNameValuePair("log", log));
		params.add(new BasicNameValuePair("device", getDeviceName()));
		return new Request("sendKeyboardLogs", params, handler, true);
	}

	public static DownloadFile downloadMrg(long id, FileOutputStream output, DownloadHandler handler) {
		return new DownloadFile(String.format(MRG_URL, id), output, handler);
	}

	public static String getMrgURL(long id) {
		return String.format(MRG_URL, id);
	}

	public static enum LevelsSortType {
		POPULAR("popular"), TRACKS("tracks"), RECENT("recent"), OLDEST("oldest");

		private final String text;

		private LevelsSortType(final String text) {
			this.text = text;
		}

		@Override
		public String toString() {
			return text;
		}
	}

	public static LevelsSortType getSortTypeById(int id) {
		switch (id) {
			case 0:
				return LevelsSortType.POPULAR;
			case 1:
				return LevelsSortType.RECENT;
			case 2:
				return LevelsSortType.OLDEST;
			case 3:
				return LevelsSortType.TRACKS;
		}
		return null;
	}

	public static int getIdBySortType(LevelsSortType type) {
		switch (type) {
			case POPULAR:
				return 0;
			case RECENT:
				return 1;
			case OLDEST:
				return 2;
			case TRACKS:
				return 3;
		}
		return 0;
	}

}