diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-22 11:02:00 +0200 |
---|---|---|
committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-22 11:02:00 +0200 |
commit | a90199196e34be9fb985a38b40ef63e870e48f58 (patch) | |
tree | 9d0b103ec7113798dd79690a97d224df0614385f | |
parent | 4ef252623bb43183290cb952c9e058a3dd59c59d (diff) | |
download | cgeo-a90199196e34be9fb985a38b40ef63e870e48f58.zip cgeo-a90199196e34be9fb985a38b40ef63e870e48f58.tar.gz cgeo-a90199196e34be9fb985a38b40ef63e870e48f58.tar.bz2 |
Precompute static URI values
-rw-r--r-- | main/src/cgeo/geocaching/LogTemplateProvider.java | 5 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgBase.java | 49 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgGeo.java | 5 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeocaches.java | 5 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeoinit.java | 5 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeotouch.java | 5 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeovisit.java | 9 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/connector/GCConnector.java | 6 |
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[^>]+> ([^<]+)</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)) { |