aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2011-09-22 11:02:00 +0200
committerSamuel Tardieu <sam@rfc1149.net>2011-09-22 11:02:00 +0200
commita90199196e34be9fb985a38b40ef63e870e48f58 (patch)
tree9d0b103ec7113798dd79690a97d224df0614385f
parent4ef252623bb43183290cb952c9e058a3dd59c59d (diff)
downloadcgeo-a90199196e34be9fb985a38b40ef63e870e48f58.zip
cgeo-a90199196e34be9fb985a38b40ef63e870e48f58.tar.gz
cgeo-a90199196e34be9fb985a38b40ef63e870e48f58.tar.bz2
Precompute static URI values
-rw-r--r--main/src/cgeo/geocaching/LogTemplateProvider.java5
-rw-r--r--main/src/cgeo/geocaching/cgBase.java49
-rw-r--r--main/src/cgeo/geocaching/cgGeo.java5
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java5
-rw-r--r--main/src/cgeo/geocaching/cgeoinit.java5
-rw-r--r--main/src/cgeo/geocaching/cgeotouch.java5
-rw-r--r--main/src/cgeo/geocaching/cgeovisit.java9
-rw-r--r--main/src/cgeo/geocaching/connector/GCConnector.java6
8 files changed, 48 insertions, 41 deletions
diff --git a/main/src/cgeo/geocaching/LogTemplateProvider.java b/main/src/cgeo/geocaching/LogTemplateProvider.java
index d8302c9..76ba0e0 100644
--- a/main/src/cgeo/geocaching/LogTemplateProvider.java
+++ b/main/src/cgeo/geocaching/LogTemplateProvider.java
@@ -15,6 +15,8 @@ import java.util.regex.Pattern;
*
*/
public class LogTemplateProvider {
+ private static final URI URI_GC_EMAIL = cgBase.buildURI(false, "www.geocaching.com", "/email/");
+
public static abstract class LogTemplate {
private String template;
private int resourceId;
@@ -89,8 +91,7 @@ public class LogTemplateProvider {
}
String findCount = "";
final Map<String, String> params = new HashMap<String, String>();
- final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/email/");
- final String page = base.request(uri, "GET", params, false, false, false).getData();
+ final String page = base.request(URI_GC_EMAIL, "GET", params, false, false, false).getData();
int current = parseFindCount(page);
if (current >= 0) {
diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java
index b924dae..328a4d4 100644
--- a/main/src/cgeo/geocaching/cgBase.java
+++ b/main/src/cgeo/geocaching/cgBase.java
@@ -131,6 +131,17 @@ public class cgBase {
private final static Pattern PATTERN_TRACKABLE_Distance = Pattern.compile("<h4[^>]*\\W*Tracking History \\(([0-9.,]+(km|mi))[^\\)]*\\)", Pattern.CASE_INSENSITIVE);
private final static Pattern PATTERN_TRACKABLE_Log = Pattern.compile("<tr class=\"Data.+?src=\"/images/icons/([^.]+)\\.gif[^>]+>&nbsp;([^<]+)</td>.+?guid.+?>([^<]+)</a>.+?(?:guid=([^\"]+)\">([^<]+)</a>.+?)?<td colspan=\"4\">(.+?)(?:<ul.+?ul>)?\\s*</td>\\s*</tr>", Pattern.CASE_INSENSITIVE);
+ private static final URI URI_GC_LOGIN_DEFAULT = buildURI(true, "www.geocaching.com", "/login/default.aspx");
+ private static final URI URI_GC_DEFAULT = buildURI(false, "www.geocaching.com", "/default.aspx");
+ private static final URI URI_GOOGLE_RECAPTCHA = buildURI(false, "www.google.com", "/recaptcha/api/challenge");
+ private static final URI URI_GC_MAP_DEFAULT = buildURI(false, "www.geocaching.com", "/map/default.aspx");
+ private static final URI URI_GC_SEEK_NEAREST = buildURI(false, "www.geocaching.com", "/seek/nearest.aspx");
+ private static final URI URI_GC_SEEK_LOGBOOK = buildURI(false, "www.geocaching.com", "/seek/geocache.logbook");
+ private static final URI URI_GC_PREFERENCES = buildURI(false, "www.geocaching.com", "/account/ManagePreferences.aspx");
+ private static final URI URI_GCVOTE_GETVOTES = buildURI(false, "gcvote.com", "/getVotes.php");
+ private static final URI URI_GO4CACHE_GET = buildURI(false, "api.go4cache.com", "/get.php");
+ private static final URI URI_GC_TRACK_DETAILS = buildURI(false, "www.geocaching.com", "/track/details.aspx");
+
public final static Map<String, String> cacheTypes = new HashMap<String, String>();
public final static Map<String, String> cacheIDs = new HashMap<String, String>();
static {
@@ -470,7 +481,6 @@ public class cgBase {
}
public int login() {
- final URI uri = buildURI(true, "www.geocaching.com", "/login/default.aspx");
cgResponse loginResponse = null;
String loginData = null;
@@ -482,7 +492,7 @@ public class cgBase {
return -3; // no login information stored
}
- loginResponse = request(uri, "GET", new HashMap<String, String>(), false, false, false);
+ loginResponse = request(URI_GC_LOGIN_DEFAULT, "GET", new HashMap<String, String>(), false, false, false);
loginData = loginResponse.getData();
if (StringUtils.isNotBlank(loginData)) {
if (checkLogin(loginData)) {
@@ -522,7 +532,7 @@ public class cgBase {
params.put("ctl00$SiteContent$cbRememberMe", "on");
params.put("ctl00$SiteContent$btnSignIn", "Login");
- loginResponse = request(uri, "POST", params, false, false, false);
+ loginResponse = request(URI_GC_LOGIN_DEFAULT, "POST", params, false, false, false);
loginData = loginResponse.getData();
if (StringUtils.isNotBlank(loginData)) {
@@ -581,14 +591,13 @@ public class cgBase {
}
public String switchToEnglish(String[] viewstates) {
- final URI uri = buildURI(false, "www.geocaching.com", "/default.aspx");
final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
params.put("__EVENTTARGET", "ctl00$uxLocaleList$uxLocaleList$ctl00$uxLocaleItem"); // switch to english
params.put("__EVENTARGUMENT", "");
- return request(uri, "POST", params, false, false, false).getData();
+ return request(URI_GC_DEFAULT, "POST", params, false, false, false).getData();
}
public cgCacheWrap parseSearch(cgSearchThread thread, String url, String page, boolean showCaptcha) {
@@ -631,8 +640,7 @@ public class cgBase {
}
if (recaptchaJsParam != null) {
- final URI uri = buildURI(false, "www.google.com", "/recaptcha/api/challenge");
- final String recaptchaJs = request(uri, "GET", "k=" + urlencode_rfc3986(recaptchaJsParam.trim()), 0, true).getData();
+ final String recaptchaJs = request(URI_GOOGLE_RECAPTCHA, "GET", "k=" + urlencode_rfc3986(recaptchaJsParam.trim()), 0, true).getData();
if (StringUtils.isNotBlank(recaptchaJs)) {
final Matcher matcherRecaptchaChallenge = patternRecaptchaChallenge.matcher(recaptchaJs);
@@ -909,8 +917,7 @@ public class cgBase {
}
params.append("&ctl00%24ContentBody%24uxDownloadLoc=Download+Waypoints");
- final URI uri = buildURI(false, "www.geocaching.com", "/seek/nearest.aspx");
- final String coordinates = request(uri, "POST", params.toString(), 0, true).getData();
+ final String coordinates = request(URI_GC_SEEK_NEAREST, "POST", params.toString(), 0, true).getData();
if (StringUtils.isNotBlank(coordinates)) {
if (coordinates.contains("You have not agreed to the license agreement. The license agreement is required before you can start downloading GPX or LOC files from Geocaching.com")) {
@@ -1665,8 +1672,7 @@ public class cgBase {
params.put("sp", "0");
params.put("sf", "0");
params.put("decrypt", "1");
- final URI uri = buildURI(false, "www.geocaching.com", "/seek/geocache.logbook");
- final cgResponse response = request(uri, "GET", params, false, false, false);
+ final cgResponse response = request(URI_GC_SEEK_LOGBOOK, "GET", params, false, false, false);
if (response.getStatusCode() != 200) {
Log.e(cgSettings.tag, "cgBase.loadLogsFromDetails: error " + response.getStatusCode() + " when requesting log information");
return;
@@ -1814,8 +1820,7 @@ public class cgBase {
public void detectGcCustomDate()
{
- final URI uri = buildURI(false, "www.geocaching.com", "/account/ManagePreferences.aspx");
- final String result = request(uri, "GET", null, false, false, false).getData();
+ final String result = request(URI_GC_PREFERENCES, "GET", null, false, false, false).getData();
if (null == result) {
Log.w(cgSettings.tag, "cgeoBase.detectGcCustomDate: result is null");
@@ -1877,8 +1882,7 @@ public class cgBase {
params.put("waypoints", implode(",", geocodes.toArray()));
}
params.put("version", "cgeo");
- final URI uri = buildURI(false, "gcvote.com", "/getVotes.php");
- final String votes = request(uri, "GET", params, false, false, false).getData();
+ final String votes = request(URI_GCVOTE_GETVOTES, "GET", params, false, false, false).getData();
if (votes == null) {
return null;
}
@@ -2924,8 +2928,7 @@ public class cgBase {
params.put("lnm", String.format((Locale) null, "%.6f", lonMin));
params.put("lnx", String.format((Locale) null, "%.6f", lonMax));
- final URI uri = buildURI(false, "api.go4cache.com", "/get.php");
- final String data = request(uri, "POST", params, false, false, false).getData();
+ final String data = request(URI_GO4CACHE_GET, "POST", params, false, false, false).getData();
if (StringUtils.isBlank(data)) {
Log.e(cgSettings.tag, "cgeoBase.getGeocachersInViewport: No data from server");
@@ -3014,8 +3017,7 @@ public class cgBase {
params.put("id", id);
}
- final URI uri = buildURI(false, "www.geocaching.com", "/track/details.aspx");
- String page = requestLogged(uri, "GET", params, false, false, false);
+ String page = requestLogged(URI_GC_TRACK_DETAILS, "GET", params, false, false, false);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchTrackable: No data from server");
@@ -3103,7 +3105,7 @@ public class cgBase {
params.put("ctl00$ContentBody$LogBookPanel1$uxTrackables$hdnCurrentFilter", "");
}
- final URI uri = buildURI(false, "www.geocaching.com", "/seek/log.aspx?ID=" + cacheid);
+ final URI uri = buildURI(false, "www.geocaching.com", "/seek/log.aspx", "ID=" + cacheid);
String page = request(uri, "POST", params, false, false, false).getData();
if (checkLogin(page) == false) {
int loginState = login();
@@ -3233,7 +3235,7 @@ public class cgBase {
params.put("ctl00$ContentBody$LogBookPanel1$LogButton", "Submit Log Entry");
params.put("ctl00$ContentBody$uxVistOtherListingGC", "");
- final URI uri = buildURI(false, "www.geocaching.com", "/track/log.aspx?wid=" + tbid);
+ final URI uri = buildURI(false, "www.geocaching.com", "/track/log.aspx", "wid=" + tbid);
String page = request(uri, "POST", params, false, false, false).getData();
if (checkLogin(page) == false) {
int loginState = login();
@@ -3300,7 +3302,7 @@ public class cgBase {
* @return -1: error occured
*/
public int removeFromWatchlist(cgCache cache) {
- final URI uri = buildURI(false, "www.geocaching.com", "/my/watchlist.aspx?ds=1&action=rem&id=" + cache.cacheId);
+ final URI uri = buildURI(false, "www.geocaching.com", "/my/watchlist.aspx", "ds=1&action=rem&id=" + cache.cacheId);
String page = requestLogged(uri, "POST", null, false, false, false);
if (StringUtils.isBlank(page)) {
@@ -4493,8 +4495,7 @@ public class cgBase {
}
public String getMapUserToken(Handler noTokenHandler) {
- final URI uri = buildURI(false, "www.geocaching.com", "/map/default.aspx");
- final cgResponse response = request(uri, "GET", "", 0, false);
+ final cgResponse response = request(URI_GC_MAP_DEFAULT, "GET", "", 0, false);
final String data = response.getData();
String usertoken = null;
diff --git a/main/src/cgeo/geocaching/cgGeo.java b/main/src/cgeo/geocaching/cgGeo.java
index 7730c1b..c458108 100644
--- a/main/src/cgeo/geocaching/cgGeo.java
+++ b/main/src/cgeo/geocaching/cgGeo.java
@@ -52,6 +52,8 @@ public class cgGeo {
public Integer satellitesFixed = null;
public double distanceNow = 0d;
+ private static final URI URI_GO4CACHE = cgBase.buildURI(false, "api.go4cache.com", "/");
+
public cgGeo(Context contextIn, cgeoapplication appIn, cgUpdateLoc geoUpdateIn, cgBase baseIn, cgSettings settingsIn, int timeIn, int distanceIn) {
context = contextIn;
app = appIn;
@@ -382,7 +384,6 @@ public class cgGeo {
if (settings.publicLoc == 1 && (lastGo4cacheCoords == null || coordsNow.distanceTo(lastGo4cacheCoords) > 0.75)) {
g4cRunning = true;
- final URI uri = cgBase.buildURI(false, "api.go4cache.com", "/");
String action = null;
if (app != null) {
action = app.getAction();
@@ -403,7 +404,7 @@ public class cgGeo {
if (base.version != null) {
params.put("v", base.version);
}
- final String res = base.request(uri, "POST", params, false, false, false).getData();
+ final String res = base.request(URI_GO4CACHE, "POST", params, false, false, false).getData();
if (StringUtils.isNotBlank(res)) {
lastGo4cacheCoords = coordsNow;
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index 17bb58f..3e12b2d 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -141,6 +141,8 @@ public class cgeocaches extends AbstractListActivity {
private static final int CONTEXT_MENU_MOVE_TO_LIST = 1000;
private static final int MENU_MOVE_SELECTED_OR_ALL_TO_LIST = 1200;
+ private static final URI URI_SEND2CGEO_READ = cgBase.buildURI(false, "send2.cgeo.org", "/read.html");
+
private String action = null;
private String type = null;
private Geopoint coords = null;
@@ -2084,8 +2086,7 @@ public class cgeocaches extends AbstractListActivity {
if (deviceCode == null) {
deviceCode = "";
}
- final URI uri = cgBase.buildURI(false, "send2.cgeo.org", "/read.html");
- cgResponse responseFromWeb = base.request(uri, "GET", "code=" + cgBase.urlencode_rfc3986(deviceCode), 0, true);
+ cgResponse responseFromWeb = base.request(URI_SEND2CGEO_READ, "GET", "code=" + cgBase.urlencode_rfc3986(deviceCode), 0, true);
if (responseFromWeb.getStatusCode() == 200) {
if (responseFromWeb.getData().length() > 2) {
diff --git a/main/src/cgeo/geocaching/cgeoinit.java b/main/src/cgeo/geocaching/cgeoinit.java
index ebbe638..cbce65a 100644
--- a/main/src/cgeo/geocaching/cgeoinit.java
+++ b/main/src/cgeo/geocaching/cgeoinit.java
@@ -37,6 +37,8 @@ public class cgeoinit extends AbstractActivity {
private final int SELECT_MAPFILE_REQUEST = 1;
+ private static final URI URI_SEND2CGEO_AUTH = cgBase.buildURI(false, "send2.cgeo.org", "/auth.html");
+
private ProgressDialog loginDialog = null;
private ProgressDialog webDialog = null;
private Handler logInHandler = new Handler() {
@@ -1047,8 +1049,7 @@ public class cgeoinit extends AbstractActivity {
String params = "name=" + cgBase.urlencode_rfc3986(nam) + "&code=" + cgBase.urlencode_rfc3986(cod);
- final URI uri = cgBase.buildURI(false, "send2.cgeo.org", "/auth.html");
- cgResponse response = base.request(uri, "GET", params, 0, true);
+ cgResponse response = base.request(URI_SEND2CGEO_AUTH, "GET", params, 0, true);
if (response.getStatusCode() == 200)
{
diff --git a/main/src/cgeo/geocaching/cgeotouch.java b/main/src/cgeo/geocaching/cgeotouch.java
index 6a24a1a..5c62087 100644
--- a/main/src/cgeo/geocaching/cgeotouch.java
+++ b/main/src/cgeo/geocaching/cgeotouch.java
@@ -28,6 +28,8 @@ import java.util.List;
import java.util.Map;
public class cgeotouch extends cgLogForm {
+ private static final URI URI_GC_TRACK_LOG = cgBase.buildURI(false, "www.geocaching.com", "/track/log.aspx");
+
private cgTrackable trackable = null;
private List<Integer> types = new ArrayList<Integer>();
private ProgressDialog waitDialog = null;
@@ -387,8 +389,7 @@ public class cgeotouch extends cgLogForm {
return;
}
- final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/track/log.aspx");
- final String page = base.request(uri, "GET", params, false, false, false).getData();
+ final String page = base.request(URI_GC_TRACK_LOG, "GET", params, false, false, false).getData();
viewstates = cgBase.getViewstates(page);
diff --git a/main/src/cgeo/geocaching/cgeovisit.java b/main/src/cgeo/geocaching/cgeovisit.java
index 86e6aca..9689e96 100644
--- a/main/src/cgeo/geocaching/cgeovisit.java
+++ b/main/src/cgeo/geocaching/cgeovisit.java
@@ -43,6 +43,8 @@ public class cgeovisit extends cgLogForm {
private static final int MENU_SIGNATURE = 1;
private static final int SUBMENU_VOTE = 2;
+ private static final URI URI_GC_SEEK_LOG = cgBase.buildURI(false, "www.geocaching.com", "/seek/log.aspx");
+
private LayoutInflater inflater = null;
private cgCache cache = null;
private List<Integer> types = new ArrayList<Integer>();
@@ -221,6 +223,7 @@ public class cgeovisit extends cgLogForm {
}
}
};
+ private static final URI URI_GCVOTE_SETVOTE = cgBase.buildURI(false, "gcvote.com", "/setVote.php");
public cgeovisit() {
super("c:geo-log");
@@ -382,8 +385,7 @@ public class cgeovisit extends cgLogForm {
params.put("voteUser", String.format("%.1f", rating).replace(',', '.'));
params.put("version", "cgeo");
- final URI uri = cgBase.buildURI(false, "gcvote.com", "/setVote.php");
- final String result = base.request(uri, "GET", params, false, false, false).getData();
+ final String result = base.request(URI_GCVOTE_SETVOTE, "GET", params, false, false, false).getData();
return result.trim().equalsIgnoreCase("ok");
}
@@ -715,8 +717,7 @@ public class cgeovisit extends cgLogForm {
return;
}
- final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/seek/log.aspx");
- final String page = base.request(uri, "GET", params, false, false, false).getData();
+ final String page = base.request(URI_GC_SEEK_LOG, "GET", params, false, false, false).getData();
viewstates = cgBase.getViewstates(page);
trackables = cgBase.parseTrackableLog(page);
diff --git a/main/src/cgeo/geocaching/connector/GCConnector.java b/main/src/cgeo/geocaching/connector/GCConnector.java
index d3add92..3aca3d7 100644
--- a/main/src/cgeo/geocaching/connector/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/GCConnector.java
@@ -20,6 +20,8 @@ import java.util.UUID;
public class GCConnector extends AbstractConnector implements IConnector {
+ private static final URI URI_GC_SEEK_CACHE_DETAILS = cgBase.buildURI(false, "www.geocaching.com", "/seek/cache_details.aspx");
+
@Override
public boolean canHandle(String geocode) {
return StringUtils.isNotBlank(geocode) && StringUtils.startsWithIgnoreCase(geocode, "GC");
@@ -67,8 +69,6 @@ public class GCConnector extends AbstractConnector implements IConnector {
@Override
public UUID searchByGeocode(final cgBase base, String geocode, final String guid, final cgeoapplication app, final cgSearch search, final int reason) {
- final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/seek/cache_details.aspx");
- final String method = "GET";
final Map<String, String> params = new HashMap<String, String>();
if (StringUtils.isNotBlank(geocode)) {
params.put("wp", geocode);
@@ -77,7 +77,7 @@ public class GCConnector extends AbstractConnector implements IConnector {
}
params.put("decrypt", "y");
- String page = base.requestLogged(uri, method, params, false, false, false);
+ String page = base.requestLogged(URI_GC_SEEK_CACHE_DETAILS, "GET", params, false, false, false);
if (StringUtils.isEmpty(page)) {
if (app.isThere(geocode, guid, true, false)) {