aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2011-09-22 09:37:57 +0200
committerSamuel Tardieu <sam@rfc1149.net>2011-09-22 10:38:48 +0200
commit4ef252623bb43183290cb952c9e058a3dd59c59d (patch)
tree8f8a04c55821338ffa4250c9590465652fd8686a
parent46c20fdd788157dedf1d9b9b1a30efd3fa45eceb (diff)
downloadcgeo-4ef252623bb43183290cb952c9e058a3dd59c59d.zip
cgeo-4ef252623bb43183290cb952c9e058a3dd59c59d.tar.gz
cgeo-4ef252623bb43183290cb952c9e058a3dd59c59d.tar.bz2
Use URI instead of secure/host/path when calling request()
Add new URI version of the request() family.
-rw-r--r--main/src/cgeo/geocaching/LogTemplateProvider.java4
-rw-r--r--main/src/cgeo/geocaching/cgBase.java160
-rw-r--r--main/src/cgeo/geocaching/cgGeo.java7
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java8
-rw-r--r--main/src/cgeo/geocaching/cgeoinit.java4
-rw-r--r--main/src/cgeo/geocaching/cgeotouch.java4
-rw-r--r--main/src/cgeo/geocaching/cgeovisit.java7
-rw-r--r--main/src/cgeo/geocaching/connector/GCConnector.java6
8 files changed, 96 insertions, 104 deletions
diff --git a/main/src/cgeo/geocaching/LogTemplateProvider.java b/main/src/cgeo/geocaching/LogTemplateProvider.java
index 4119b37..d8302c9 100644
--- a/main/src/cgeo/geocaching/LogTemplateProvider.java
+++ b/main/src/cgeo/geocaching/LogTemplateProvider.java
@@ -4,6 +4,7 @@ import org.apache.commons.lang3.StringUtils;
import android.util.Log;
+import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
@@ -88,7 +89,8 @@ public class LogTemplateProvider {
}
String findCount = "";
final Map<String, String> params = new HashMap<String, String>();
- final String page = base.request(false, "www.geocaching.com", "/email/", "GET", params, false, false, false).getData();
+ final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/email/");
+ final String page = base.request(uri, "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 10175d1..b924dae 100644
--- a/main/src/cgeo/geocaching/cgBase.java
+++ b/main/src/cgeo/geocaching/cgBase.java
@@ -470,8 +470,7 @@ public class cgBase {
}
public int login() {
- final String host = "www.geocaching.com";
- final String path = "/login/default.aspx";
+ final URI uri = buildURI(true, "www.geocaching.com", "/login/default.aspx");
cgResponse loginResponse = null;
String loginData = null;
@@ -483,7 +482,7 @@ public class cgBase {
return -3; // no login information stored
}
- loginResponse = request(true, host, path, "GET", new HashMap<String, String>(), false, false, false);
+ loginResponse = request(uri, "GET", new HashMap<String, String>(), false, false, false);
loginData = loginResponse.getData();
if (StringUtils.isNotBlank(loginData)) {
if (checkLogin(loginData)) {
@@ -523,7 +522,7 @@ public class cgBase {
params.put("ctl00$SiteContent$cbRememberMe", "on");
params.put("ctl00$SiteContent$btnSignIn", "Login");
- loginResponse = request(true, host, path, "POST", params, false, false, false);
+ loginResponse = request(uri, "POST", params, false, false, false);
loginData = loginResponse.getData();
if (StringUtils.isNotBlank(loginData)) {
@@ -582,15 +581,14 @@ public class cgBase {
}
public String switchToEnglish(String[] viewstates) {
- final String host = "www.geocaching.com";
- final String path = "/default.aspx";
+ 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(false, host, path, "POST", params, false, false, false).getData();
+ return request(uri, "POST", params, false, false, false).getData();
}
public cgCacheWrap parseSearch(cgSearchThread thread, String url, String page, boolean showCaptcha) {
@@ -633,7 +631,8 @@ public class cgBase {
}
if (recaptchaJsParam != null) {
- final String recaptchaJs = request(false, "www.google.com", "/recaptcha/api/challenge", "GET", "k=" + urlencode_rfc3986(recaptchaJsParam.trim()), 0, true).getData();
+ 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();
if (StringUtils.isNotBlank(recaptchaJs)) {
final Matcher matcherRecaptchaChallenge = patternRecaptchaChallenge.matcher(recaptchaJs);
@@ -884,8 +883,6 @@ public class cgBase {
try {
// get coordinates for parsed caches
- final String host = "www.geocaching.com";
- final String path = "/seek/nearest.aspx";
final StringBuilder params = new StringBuilder();
params.append("__EVENTTARGET=&__EVENTARGUMENT=");
if (ArrayUtils.isNotEmpty(caches.viewstates)) {
@@ -912,7 +909,8 @@ public class cgBase {
}
params.append("&ctl00%24ContentBody%24uxDownloadLoc=Download+Waypoints");
- final String coordinates = request(false, host, path, "POST", params.toString(), 0, true).getData();
+ final URI uri = buildURI(false, "www.geocaching.com", "/seek/nearest.aspx");
+ final String coordinates = request(uri, "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")) {
@@ -967,14 +965,14 @@ public class cgBase {
return caches;
}
- public static cgCacheWrap parseMapJSON(String url, String data) {
+ public static cgCacheWrap parseMapJSON(final URI uri, final String data) {
if (StringUtils.isEmpty(data)) {
Log.e(cgSettings.tag, "cgeoBase.parseMapJSON: No page given");
return null;
}
final cgCacheWrap caches = new cgCacheWrap();
- caches.url = url;
+ caches.url = uri.toString();
try {
final JSONObject yoDawg = new JSONObject(data);
@@ -1667,8 +1665,8 @@ public class cgBase {
params.put("sp", "0");
params.put("sf", "0");
params.put("decrypt", "1");
- final cgResponse response = request(false, "www.geocaching.com", "/seek/geocache.logbook", "GET",
- params, false, false, false);
+ final URI uri = buildURI(false, "www.geocaching.com", "/seek/geocache.logbook");
+ final cgResponse response = request(uri, "GET", params, false, false, false);
if (response.getStatusCode() != 200) {
Log.e(cgSettings.tag, "cgBase.loadLogsFromDetails: error " + response.getStatusCode() + " when requesting log information");
return;
@@ -1816,10 +1814,8 @@ public class cgBase {
public void detectGcCustomDate()
{
- final String host = "www.geocaching.com";
- final String path = "/account/ManagePreferences.aspx";
-
- final String result = request(false, host, path, "GET", null, false, false, false).getData();
+ final URI uri = buildURI(false, "www.geocaching.com", "/account/ManagePreferences.aspx");
+ final String result = request(uri, "GET", null, false, false, false).getData();
if (null == result) {
Log.w(cgSettings.tag, "cgeoBase.detectGcCustomDate: result is null");
@@ -1881,7 +1877,8 @@ public class cgBase {
params.put("waypoints", implode(",", geocodes.toArray()));
}
params.put("version", "cgeo");
- final String votes = request(false, "gcvote.com", "/getVotes.php", "GET", params, false, false, false).getData();
+ final URI uri = buildURI(false, "gcvote.com", "/getVotes.php");
+ final String votes = request(uri, "GET", params, false, false, false).getData();
if (votes == null) {
return null;
}
@@ -2524,11 +2521,12 @@ public class cgBase {
params.put("__EVENTTARGET", "ctl00$ContentBody$pgrBottom$ctl08");
params.put("__EVENTARGUMENT", "");
- String page = request(false, host, path, method, params, false, false, true).getData();
+ final URI uri = buildURI(false, host, path);
+ String page = request(uri, method, params, false, false, true).getData();
if (checkLogin(page) == false) {
int loginState = login();
if (loginState == 1) {
- page = request(false, host, path, method, params, false, false, true).getData();
+ page = request(uri, method, params, false, false, true).getData();
} else if (loginState == -3) {
Log.i(cgSettings.tag, "Working as guest.");
} else {
@@ -2673,7 +2671,8 @@ public class cgBase {
params.put("lng", longitude);
final String url = "http://" + host + path + "?" + prepareParameters(params, false, true);
- String page = requestLogged(false, host, path, method, params, false, false, true);
+ final URI uri = buildURI(false, host, path);
+ String page = requestLogged(uri, method, params, false, false, true);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchByCoords: No data from server");
@@ -2723,7 +2722,8 @@ public class cgBase {
params.put("key", keyword);
final String url = "http://" + host + path + "?" + prepareParameters(params, false, true);
- String page = requestLogged(false, host, path, method, params, false, false, true);
+ final URI uri = cgBase.buildURI(false, host, path);
+ String page = requestLogged(uri, method, params, false, false, true);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchByKeyword: No data from server");
@@ -2779,7 +2779,8 @@ public class cgBase {
}
final String url = "http://" + host + path + "?" + prepareParameters(params, my, true);
- String page = requestLogged(false, host, path, method, params, false, my, true);
+ final URI uri = buildURI(false, host, path);
+ String page = requestLogged(uri, method, params, false, my, true);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchByUsername: No data from server");
@@ -2829,7 +2830,8 @@ public class cgBase {
params.put("u", userName);
final String url = "http://" + host + path + "?" + prepareParameters(params, false, true);
- String page = requestLogged(false, host, path, method, params, false, false, true);
+ final URI uri = buildURI(false, host, path);
+ String page = requestLogged(uri, method, params, false, false, true);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchByOwner: No data from server");
@@ -2879,19 +2881,15 @@ public class cgBase {
String params = "{\"dto\":{\"data\":{\"c\":1,\"m\":\"\",\"d\":\"" + latMax + "|" + latMin + "|" + lonMax + "|" + lonMin + "\"},\"ut\":\"" + usertoken + "\"}}";
- final String url = "http://" + host + path + "?" + params;
- try {
- page = requestJSONgc(new URI("http", host, path, null), params);
- } catch (URISyntaxException e) {
- Log.e(cgSettings.tag, "cgeoBase.searchByViewPort", e);
- }
+ final URI uri = buildURI(false, host, path);
+ page = requestJSONgc(uri, params);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchByViewport: No data from server");
return null;
}
- final cgCacheWrap caches = parseMapJSON(url, page);
+ final cgCacheWrap caches = parseMapJSON(buildURI(false, host, path, params), page);
if (caches == null || caches.cacheList == null || caches.cacheList.isEmpty()) {
Log.e(cgSettings.tag, "cgeoBase.searchByViewport: No cache parsed");
}
@@ -2918,9 +2916,6 @@ public class cgBase {
return users;
}
- final String host = "api.go4cache.com";
- final String path = "/get.php";
- final String method = "POST";
final Map<String, String> params = new HashMap<String, String>();
params.put("u", username);
@@ -2929,7 +2924,8 @@ public class cgBase {
params.put("lnm", String.format((Locale) null, "%.6f", lonMin));
params.put("lnx", String.format((Locale) null, "%.6f", lonMax));
- final String data = request(false, host, path, method, params, false, false, false).getData();
+ final URI uri = buildURI(false, "api.go4cache.com", "/get.php");
+ final String data = request(uri, "POST", params, false, false, false).getData();
if (StringUtils.isBlank(data)) {
Log.e(cgSettings.tag, "cgeoBase.getGeocachersInViewport: No data from server");
@@ -3009,9 +3005,6 @@ public class cgBase {
return null;
}
- final String host = "www.geocaching.com";
- final String path = "/track/details.aspx";
- final String method = "GET";
final Map<String, String> params = new HashMap<String, String>();
if (StringUtils.isNotBlank(geocode)) {
params.put("tracker", geocode);
@@ -3021,7 +3014,8 @@ public class cgBase {
params.put("id", id);
}
- String page = requestLogged(false, host, path, method, params, false, false, false);
+ final URI uri = buildURI(false, "www.geocaching.com", "/track/details.aspx");
+ String page = requestLogged(uri, "GET", params, false, false, false);
if (StringUtils.isBlank(page)) {
Log.e(cgSettings.tag, "cgeoBase.searchTrackable: No data from server");
@@ -3079,9 +3073,6 @@ public class cgBase {
Log.i(cgSettings.tag, "Trying to post log for cache #" + cacheid + " - action: " + logType + "; date: " + year + "." + month + "." + day + ", log: " + log + "; trackables: 0");
}
- final String host = "www.geocaching.com";
- final String path = "/seek/log.aspx?ID=" + cacheid;
- final String method = "POST";
final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
@@ -3112,11 +3103,12 @@ public class cgBase {
params.put("ctl00$ContentBody$LogBookPanel1$uxTrackables$hdnCurrentFilter", "");
}
- String page = request(false, host, path, method, params, false, false, false).getData();
+ 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();
if (loginState == 1) {
- page = request(false, host, path, method, params, false, false, false).getData();
+ page = request(uri, "POST", params, false, false, false).getData();
} else {
Log.e(cgSettings.tag, "cgeoBase.postLog: Can not log in geocaching (error: " + loginState + ")");
return loginState;
@@ -3173,7 +3165,7 @@ public class cgBase {
params.put("ctl00$ContentBody$LogBookPanel1$uxTrackables$hdnCurrentFilter", "");
}
- page = request(false, host, path, method, params, false, false, false).getData();
+ page = request(uri, "POST", params, false, false, false).getData();
}
} catch (Exception e) {
Log.e(cgSettings.tag, "cgeoBase.postLog.confim: " + e.toString());
@@ -3221,9 +3213,6 @@ public class cgBase {
log = log.replace("\n", "\r\n"); // windows' eol
final Calendar currentDate = Calendar.getInstance();
- final String host = "www.geocaching.com";
- final String path = "/track/log.aspx?wid=" + tbid;
- final String method = "POST";
final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
@@ -3244,11 +3233,12 @@ public class cgBase {
params.put("ctl00$ContentBody$LogBookPanel1$LogButton", "Submit Log Entry");
params.put("ctl00$ContentBody$uxVistOtherListingGC", "");
- String page = request(false, host, path, method, params, false, false, false).getData();
+ 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();
if (loginState == 1) {
- page = request(false, host, path, method, params, false, false, false).getData();
+ page = request(uri, "POST", params, false, false, false).getData();
} else {
Log.e(cgSettings.tag, "cgeoBase.postLogTrackable: Can not log in geocaching (error: " + loginState + ")");
return loginState;
@@ -3283,7 +3273,8 @@ public class cgBase {
* @return -1: error occured
*/
public int addToWatchlist(cgCache cache) {
- String page = requestLogged(false, "www.geocaching.com", "/my/watchlist.aspx?w=" + cache.cacheId,
+ final URI uri = buildURI(false, "www.geocaching.com", "/my/watchlist.aspx", "w=" + cache.cacheId);
+ String page = requestLogged(uri,
"POST", null, false, false, false);
if (StringUtils.isBlank(page)) {
@@ -3309,11 +3300,8 @@ public class cgBase {
* @return -1: error occured
*/
public int removeFromWatchlist(cgCache cache) {
- String host = "www.geocaching.com";
- String path = "/my/watchlist.aspx?ds=1&action=rem&id=" + cache.cacheId;
- String method = "POST";
-
- String page = requestLogged(false, host, path, method, null, false, false, false);
+ 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)) {
Log.e(cgSettings.tag, "cgBase.removeFromWatchlist: No data from server");
@@ -3327,7 +3315,7 @@ public class cgBase {
params.put("__EVENTARGUMENT", "");
params.put("ctl00$ContentBody$btnYes", "Yes");
- page = request(false, host, path, method, params, false, false, false).getData();
+ page = request(uri, "POST", params, false, false, false).getData();
boolean guidOnPage = cache.isGuidContainedInPage(page);
if (!guidOnPage) {
Log.i(cgSettings.tag, "cgBase.removeFromWatchlist: cache removed from watchlist");
@@ -3573,20 +3561,35 @@ public class cgBase {
return paramsDone;
}
- public String[] requestViewstates(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my) {
- final cgResponse response = request(secure, host, path, method, params, xContentType, my, false);
+ public static URI buildURI(final boolean secure, final String host, final String path, final String query) {
+ try {
+ return new URI(secure ? "https" : "http", host, path, query, null);
+ } catch (URISyntaxException e) {
+ // This should never happen as we only use trusted URI components.
+ Log.e(cgSettings.tag, "buildURI", e);
+ return null;
+ }
+ }
+
+ public static URI buildURI(boolean secure, String host, String path) {
+ final String pathComponents[] = StringUtils.split(path, "?", 2);
+ return buildURI(secure, host, pathComponents[0], pathComponents.length > 1 ? pathComponents[1] : null);
+ }
+
+ public String[] requestViewstates(final URI uri, String method, Map<String, String> params, boolean xContentType, boolean my) {
+ final cgResponse response = request(uri, method, params, xContentType, my, false);
return getViewstates(response.getData());
}
- public String requestLogged(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) {
- cgResponse response = request(secure, host, path, method, params, xContentType, my, addF);
+ public String requestLogged(final URI uri, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) {
+ cgResponse response = request(uri, method, params, xContentType, my, addF);
String data = response.getData();
if (checkLogin(data) == false) {
int loginState = login();
if (loginState == 1) {
- response = request(secure, host, path, method, params, xContentType, my, addF);
+ response = request(uri, method, params, xContentType, my, addF);
data = response.getData();
} else {
Log.i(cgSettings.tag, "Working as guest.");
@@ -3596,20 +3599,10 @@ public class cgBase {
return data;
}
- public cgResponse request(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) {
+ public cgResponse request(final URI uri, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) {
// prepare parameters
final String paramsDone = prepareParameters(params, my, addF);
-
- return request(secure, host, path, method, paramsDone, 0, xContentType);
- }
-
- public cgResponse request(boolean secure, String host, String path, String method, Map<String, String> params, int requestId, boolean xContentType, boolean my, boolean addF) {
- try {
- return request(new URI(secure ? "https" : "http", host, path, null), method, params, requestId, xContentType, my, addF);
- } catch (URISyntaxException e) {
- Log.e(cgSettings.tag, "request", e);
- return null;
- }
+ return request(uri, method, paramsDone, 0, xContentType);
}
public cgResponse request(final URI uri, String method, Map<String, String> params, int requestId, boolean xContentType, boolean my, boolean addF) {
@@ -3617,18 +3610,6 @@ public class cgBase {
return request(uri, method, paramsDone, requestId, xContentType);
}
- public cgResponse request(boolean secure, String host, String path, String method, String params, int requestId, Boolean xContentType) {
- try {
- final String pathComponents[] = StringUtils.split(path, "?", 2);
- final URI uri = new URI(secure ? "https" : "http", host, pathComponents[0],
- pathComponents.length > 1 ? pathComponents[1] : null, null);
- return request(uri, method, params, requestId, xContentType);
- } catch (URISyntaxException e) {
- Log.e(cgSettings.tag, "request", e);
- return null;
- }
- }
-
public cgResponse request(final URI uri, String method, String params, int requestId, Boolean xContentType) {
URL u = null;
int httpCode = -1;
@@ -4512,7 +4493,8 @@ public class cgBase {
}
public String getMapUserToken(Handler noTokenHandler) {
- final cgResponse response = request(false, "www.geocaching.com", "/map/default.aspx", "GET", "", 0, false);
+ final URI uri = buildURI(false, "www.geocaching.com", "/map/default.aspx");
+ final cgResponse response = request(uri, "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 c4f51f3..7730c1b 100644
--- a/main/src/cgeo/geocaching/cgGeo.java
+++ b/main/src/cgeo/geocaching/cgGeo.java
@@ -15,6 +15,7 @@ import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
+import java.net.URI;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
@@ -381,9 +382,7 @@ public class cgGeo {
if (settings.publicLoc == 1 && (lastGo4cacheCoords == null || coordsNow.distanceTo(lastGo4cacheCoords) > 0.75)) {
g4cRunning = true;
- final String host = "api.go4cache.com";
- final String path = "/";
- final String method = "POST";
+ final URI uri = cgBase.buildURI(false, "api.go4cache.com", "/");
String action = null;
if (app != null) {
action = app.getAction();
@@ -404,7 +403,7 @@ public class cgGeo {
if (base.version != null) {
params.put("v", base.version);
}
- final String res = base.request(false, host, path, method, params, false, false, false).getData();
+ final String res = base.request(uri, "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 4d864ca..17bb58f 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -41,6 +41,7 @@ import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -48,12 +49,11 @@ import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.WindowManager;
-import android.view.ContextMenu.ContextMenuInfo;
+import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import android.widget.AdapterView.AdapterContextMenuInfo;
import java.io.File;
import java.io.FileOutputStream;
@@ -61,6 +61,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
@@ -2083,7 +2084,8 @@ public class cgeocaches extends AbstractListActivity {
if (deviceCode == null) {
deviceCode = "";
}
- cgResponse responseFromWeb = base.request(false, "send2.cgeo.org", "/read.html", "GET", "code=" + cgBase.urlencode_rfc3986(deviceCode), 0, true);
+ final URI uri = cgBase.buildURI(false, "send2.cgeo.org", "/read.html");
+ cgResponse responseFromWeb = base.request(uri, "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 6a1c7ea..ebbe638 100644
--- a/main/src/cgeo/geocaching/cgeoinit.java
+++ b/main/src/cgeo/geocaching/cgeoinit.java
@@ -31,6 +31,7 @@ import android.widget.Spinner;
import android.widget.TextView;
import java.io.File;
+import java.net.URI;
public class cgeoinit extends AbstractActivity {
@@ -1046,7 +1047,8 @@ public class cgeoinit extends AbstractActivity {
String params = "name=" + cgBase.urlencode_rfc3986(nam) + "&code=" + cgBase.urlencode_rfc3986(cod);
- cgResponse response = base.request(false, "send2.cgeo.org", "/auth.html", "GET", params, 0, true);
+ final URI uri = cgBase.buildURI(false, "send2.cgeo.org", "/auth.html");
+ cgResponse response = base.request(uri, "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 5943ef2..6a24a1a 100644
--- a/main/src/cgeo/geocaching/cgeotouch.java
+++ b/main/src/cgeo/geocaching/cgeotouch.java
@@ -20,6 +20,7 @@ import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
@@ -386,7 +387,8 @@ public class cgeotouch extends cgLogForm {
return;
}
- final String page = base.request(false, "www.geocaching.com", "/track/log.aspx", "GET", params, false, false, false).getData();
+ final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/track/log.aspx");
+ final String page = base.request(uri, "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 3cba036..86e6aca 100644
--- a/main/src/cgeo/geocaching/cgeovisit.java
+++ b/main/src/cgeo/geocaching/cgeovisit.java
@@ -25,6 +25,7 @@ import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -381,7 +382,8 @@ public class cgeovisit extends cgLogForm {
params.put("voteUser", String.format("%.1f", rating).replace(',', '.'));
params.put("version", "cgeo");
- final String result = base.request(false, "gcvote.com", "/setVote.php", "GET", params, false, false, false).getData();
+ final URI uri = cgBase.buildURI(false, "gcvote.com", "/setVote.php");
+ final String result = base.request(uri, "GET", params, false, false, false).getData();
return result.trim().equalsIgnoreCase("ok");
}
@@ -713,7 +715,8 @@ public class cgeovisit extends cgLogForm {
return;
}
- final String page = base.request(false, "www.geocaching.com", "/seek/log.aspx", "GET", params, false, false, false).getData();
+ final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/seek/log.aspx");
+ final String page = base.request(uri, "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 2eea539..d3add92 100644
--- a/main/src/cgeo/geocaching/connector/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/GCConnector.java
@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
import android.util.Log;
+import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -66,8 +67,7 @@ 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 String host = "www.geocaching.com";
- final String path = "/seek/cache_details.aspx";
+ 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)) {
@@ -77,7 +77,7 @@ public class GCConnector extends AbstractConnector implements IConnector {
}
params.put("decrypt", "y");
- String page = base.requestLogged(false, host, path, method, params, false, false, false);
+ String page = base.requestLogged(uri, method, params, false, false, false);
if (StringUtils.isEmpty(page)) {
if (app.isThere(geocode, guid, true, false)) {