aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2012-04-13 21:19:32 +0200
committerSamuel Tardieu <sam@rfc1149.net>2012-04-13 21:21:00 +0200
commit135d0a034c1fe780e2de56b591c3c2ed36169439 (patch)
treee87e3ae24ce5c413bb615491f31e9a9a60fed36b /main/src
parent8914bda79b172f21b5979769e0002a7f5f910db5 (diff)
parentb2354d78eed1b392620be489a6aadfd3f99a6da3 (diff)
downloadcgeo-135d0a034c1fe780e2de56b591c3c2ed36169439.zip
cgeo-135d0a034c1fe780e2de56b591c3c2ed36169439.tar.gz
cgeo-135d0a034c1fe780e2de56b591c3c2ed36169439.tar.bz2
Merge branch 'common-network-code' into upstream
Conflicts: main/src/cgeo/geocaching/CacheDetailActivity.java
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java13
-rw-r--r--main/src/cgeo/geocaching/StaticMapsProvider.java41
-rw-r--r--main/src/cgeo/geocaching/VisitCacheActivity.java2
-rw-r--r--main/src/cgeo/geocaching/cgBase.java8
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java2
-rw-r--r--main/src/cgeo/geocaching/cgeoinit.java2
-rw-r--r--main/src/cgeo/geocaching/cgeotouch.java2
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCBase.java52
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java3
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Tile.java18
-rw-r--r--main/src/cgeo/geocaching/gcvote/GCVote.java4
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java2
-rw-r--r--main/src/cgeo/geocaching/network/Login.java12
-rw-r--r--main/src/cgeo/geocaching/network/Network.java72
-rw-r--r--main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java2
-rw-r--r--main/src/cgeo/geocaching/ui/DirectionImage.java2
-rw-r--r--main/src/cgeo/geocaching/utils/LogTemplateProvider.java2
17 files changed, 128 insertions, 111 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index a72173b..f07155d 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -15,7 +15,6 @@ import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.geopoint.HumanDistance;
import cgeo.geocaching.geopoint.IConversion;
import cgeo.geocaching.network.HtmlImage;
-import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.ui.DecryptTextClickListener;
import cgeo.geocaching.ui.Formatter;
@@ -1826,9 +1825,7 @@ public class CacheDetailActivity extends AbstractActivity {
private class PreviewMapTask extends AsyncTask<Void, Void, BitmapDrawable> {
@Override
- protected BitmapDrawable doInBackground(Void... params) {
- BitmapDrawable image = null;
-
+ protected BitmapDrawable doInBackground(Void... parameters) {
try {
final String latlonMap = cache.getCoords().format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA);
@@ -1839,15 +1836,15 @@ public class CacheDetailActivity extends AbstractActivity {
final int height = (int) (110 * metrics.density);
// TODO move this code to StaticMapProvider and use its constant values
- final String markerUrl = Network.urlencode_rfc3986("http://cgeo.carnero.cc/_markers/my_location_mdpi.png");
+ final String markerUrl = "http://cgeo.carnero.cc/_markers/my_location_mdpi.png";
final HtmlImage mapGetter = new HtmlImage(CacheDetailActivity.this, cache.getGeocode(), false, 0, false);
- image = mapGetter.getDrawable("http://maps.google.com/maps/api/staticmap?zoom=15&size=" + width + "x" + height + "&maptype=roadmap&markers=icon%3A" + markerUrl + "%7Cshadow:false%7C" + latlonMap + "&sensor=false");
+ final Parameters params = new Parameters("zoom", "15", "size", width + "x" + height, "maptype", "roadmap", "markers", "icon:" + markerUrl + "|shadow:false|" + latlonMap, "sensor", "false");
+ return mapGetter.getDrawable("http://maps.google.com/maps/api/staticmap?" + params);
} catch (Exception e) {
Log.w("CacheDetailActivity.PreviewMapTask", e);
+ return null;
}
-
- return image;
}
@Override
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java
index 920089c..4942b1a 100644
--- a/main/src/cgeo/geocaching/StaticMapsProvider.java
+++ b/main/src/cgeo/geocaching/StaticMapsProvider.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.concurrent.BlockingThreadPool;
import cgeo.geocaching.files.LocalStorage;
import cgeo.geocaching.geopoint.GeopointFormatter.Format;
import cgeo.geocaching.network.Network;
+import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.Log;
import org.apache.commons.collections.CollectionUtils;
@@ -29,7 +30,7 @@ public class StaticMapsProvider {
return LocalStorage.getStorageFile(geocode, "map_" + prefix + level, false, createDirs);
}
- private static void downloadDifferentZooms(final cgCache cache, String markerUrl, String prefix, String latlonMap, int edge, String waypoints) {
+ private static void downloadDifferentZooms(final cgCache cache, String markerUrl, String prefix, String latlonMap, int edge, final Parameters waypoints) {
downloadMap(cache, 20, "satellite", markerUrl, prefix, 1, latlonMap, edge, waypoints);
downloadMap(cache, 18, "satellite", markerUrl, prefix, 2, latlonMap, edge, waypoints);
downloadMap(cache, 16, "roadmap", markerUrl, prefix, 3, latlonMap, edge, waypoints);
@@ -37,13 +38,22 @@ public class StaticMapsProvider {
downloadMap(cache, 11, "roadmap", markerUrl, prefix, 5, latlonMap, edge, waypoints);
}
- private static void downloadMap(cgCache cache, int zoom, String mapType, String markerUrl, String prefix, int level, String latlonMap, int edge, String waypoints) {
- final String mapUrl = "http://maps.google.com/maps/api/staticmap?center=" + latlonMap;
- final String url = mapUrl + "&zoom=" + zoom + "&size=" + edge + "x" + edge + "&maptype=" + mapType + "&markers=icon%3A" + markerUrl + "%7C" + latlonMap + waypoints + "&sensor=false";
- final File file = getMapFile(cache.getGeocode(), prefix, level, true);
- final HttpResponse httpResponse = Network.request(url, null, false);
+ private static void downloadMap(cgCache cache, int zoom, String mapType, String markerUrl, String prefix, int level, String latlonMap, int edge, final Parameters waypoints) {
+ final String mapUrl = "http://maps.google.com/maps/api/staticmap";
+ final Parameters params = new Parameters(
+ "center", latlonMap,
+ "zoom", String.valueOf(zoom),
+ "size", edge + "x" + edge,
+ "maptype", mapType,
+ "markers", "icon:" + markerUrl + '|' + latlonMap,
+ "sensor", "false");
+ if (waypoints != null) {
+ params.addAll(waypoints);
+ }
+ final HttpResponse httpResponse = Network.request(mapUrl, params);
if (httpResponse != null) {
+ final File file = getMapFile(cache.getGeocode(), prefix, level, true);
if (LocalStorage.saveEntityToFile(httpResponse, file)) {
// Delete image if it has no contents
final long fileSize = file.length();
@@ -95,7 +105,7 @@ public class StaticMapsProvider {
String wpLatlonMap = waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA);
String wpMarkerUrl = getWpMarkerUrl(waypoint);
// download map images in separate background thread for higher performance
- downloadMaps(cache, wpMarkerUrl, "wp" + waypoint.getId() + "_", wpLatlonMap, edge, "", waitForResult);
+ downloadMaps(cache, wpMarkerUrl, "wp" + waypoint.getId() + "_", wpLatlonMap, edge, null, waitForResult);
}
public static void storeCacheStaticMap(cgCache cache, Activity activity, final boolean waitForResult) {
@@ -105,22 +115,19 @@ public class StaticMapsProvider {
private static void storeCacheStaticMap(cgCache cache, int edge, final boolean waitForResult) {
final String latlonMap = cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA);
- final StringBuilder waypoints = new StringBuilder();
+ final Parameters waypoints = new Parameters();
if (cache.hasWaypoints()) {
for (cgWaypoint waypoint : cache.getWaypoints()) {
if (waypoint.getCoords() == null) {
continue;
}
- String wpMarkerUrl = getWpMarkerUrl(waypoint);
- waypoints.append("&markers=icon%3A");
- waypoints.append(wpMarkerUrl);
- waypoints.append("%7C");
- waypoints.append(waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA));
+ final String wpMarkerUrl = getWpMarkerUrl(waypoint);
+ waypoints.put("markers", "icon:" + wpMarkerUrl + "|" + waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA));
}
}
// download map images in separate background thread for higher performance
final String cacheMarkerUrl = getCacheMarkerUrl(cache);
- downloadMaps(cache, cacheMarkerUrl, "", latlonMap, edge, waypoints.toString(), waitForResult);
+ downloadMaps(cache, cacheMarkerUrl, "", latlonMap, edge, waypoints, waitForResult);
}
private static int guessMinDisplaySide(Display display) {
@@ -140,7 +147,7 @@ public class StaticMapsProvider {
}
private static void downloadMaps(final cgCache cache, final String markerUrl, final String prefix, final String latlonMap, final int edge,
- final String waypoints, boolean waitForResult) {
+ final Parameters waypoints, boolean waitForResult) {
if (waitForResult) {
downloadDifferentZooms(cache, markerUrl, prefix, latlonMap, edge, waypoints);
}
@@ -167,12 +174,12 @@ public class StaticMapsProvider {
type += "_disabled";
}
- return Network.urlencode_rfc3986(MARKERS_URL + "marker_cache_" + type + ".png");
+ return MARKERS_URL + "marker_cache_" + type + ".png";
}
private static String getWpMarkerUrl(final cgWaypoint waypoint) {
String type = waypoint.getWaypointType() != null ? waypoint.getWaypointType().id : null;
- return Network.urlencode_rfc3986(MARKERS_URL + "marker_waypoint_" + type + ".png");
+ return MARKERS_URL + "marker_waypoint_" + type + ".png";
}
public static void removeWpStaticMaps(int wp_id, String geocode) {
diff --git a/main/src/cgeo/geocaching/VisitCacheActivity.java b/main/src/cgeo/geocaching/VisitCacheActivity.java
index 73a681b..4a8e8fb 100644
--- a/main/src/cgeo/geocaching/VisitCacheActivity.java
+++ b/main/src/cgeo/geocaching/VisitCacheActivity.java
@@ -656,7 +656,7 @@ public class VisitCacheActivity extends AbstractActivity implements DateDialog.D
return;
}
- final String page = Network.getResponseData(Network.request("http://www.geocaching.com/seek/log.aspx", params, false, false, false));
+ final String page = Network.getResponseData(Network.request("http://www.geocaching.com/seek/log.aspx", params));
viewstates = Login.getViewstates(page);
trackables = cgBase.parseTrackableLog(page);
diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java
index 5144840..f0fd862 100644
--- a/main/src/cgeo/geocaching/cgBase.java
+++ b/main/src/cgeo/geocaching/cgBase.java
@@ -143,7 +143,7 @@ public class cgBase {
if (recaptchaJsParam != null) {
final Parameters params = new Parameters("k", recaptchaJsParam.trim());
- final String recaptchaJs = Network.getResponseData(Network.request("http://www.google.com/recaptcha/api/challenge", params, true));
+ final String recaptchaJs = Network.getResponseData(Network.request("http://www.google.com/recaptcha/api/challenge", params));
if (StringUtils.isNotBlank(recaptchaJs)) {
recaptchaChallenge = BaseUtils.getMatch(recaptchaJs, GCConstants.PATTERN_SEARCH_RECAPTCHACHALLENGE, true, 1, null, true);
@@ -853,7 +853,7 @@ public class cgBase {
// "sp", Boolean.toString(personal), // personal logs
"sf", Boolean.toString(friends));
- final HttpResponse response = Network.request("http://www.geocaching.com/seek/geocache.logbook", params, false, false, false);
+ final HttpResponse response = Network.request("http://www.geocaching.com/seek/geocache.logbook", params);
if (response == null) {
Log.e("cgBase.loadLogsFromDetails: cannot log logs, response is null");
return null;
@@ -1359,7 +1359,7 @@ public class cgBase {
final String uri = "http://www.geocaching.com/seek/nearest.aspx";
final String fullUri = uri + "?" + addFToParams(params, false, true);
- String page = Network.requestLogged(uri, params, false, my, true);
+ String page = Network.requestLogged(uri, params, my, true);
if (StringUtils.isBlank(page)) {
Log.e("cgeoBase.searchByAny: No data from server");
@@ -1439,7 +1439,7 @@ public class cgBase {
params.put("id", id);
}
- String page = Network.requestLogged("http://www.geocaching.com/track/details.aspx", params, false, false, false);
+ String page = Network.requestLogged("http://www.geocaching.com/track/details.aspx", params, false, false);
if (StringUtils.isBlank(page)) {
Log.e("cgeoBase.searchTrackable: No data from server");
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index edb57fb..aee3c06 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -1828,7 +1828,7 @@ public class cgeocaches extends AbstractListActivity {
deviceCode = "";
}
final Parameters params = new Parameters("code", deviceCode);
- HttpResponse responseFromWeb = Network.request("http://send2.cgeo.org/read.html", params, true);
+ HttpResponse responseFromWeb = Network.request("http://send2.cgeo.org/read.html", params);
if (responseFromWeb != null && responseFromWeb.getStatusLine().getStatusCode() == 200) {
final String response = Network.getResponseData(responseFromWeb);
diff --git a/main/src/cgeo/geocaching/cgeoinit.java b/main/src/cgeo/geocaching/cgeoinit.java
index c1771eb..c7f959f 100644
--- a/main/src/cgeo/geocaching/cgeoinit.java
+++ b/main/src/cgeo/geocaching/cgeoinit.java
@@ -864,7 +864,7 @@ public class cgeoinit extends AbstractActivity {
final String cod = StringUtils.defaultString(deviceCode);
final Parameters params = new Parameters("name", nam, "code", cod);
- HttpResponse response = Network.request("http://send2.cgeo.org/auth.html", params, true);
+ HttpResponse response = Network.request("http://send2.cgeo.org/auth.html", params);
if (response != null && response.getStatusLine().getStatusCode() == 200)
{
diff --git a/main/src/cgeo/geocaching/cgeotouch.java b/main/src/cgeo/geocaching/cgeotouch.java
index 3c757db..78d5746 100644
--- a/main/src/cgeo/geocaching/cgeotouch.java
+++ b/main/src/cgeo/geocaching/cgeotouch.java
@@ -392,7 +392,7 @@ public class cgeotouch extends AbstractActivity implements DateDialog.DateDialog
return;
}
- final String page = Network.getResponseData(Network.request("http://www.geocaching.com/track/log.aspx", params, false, false, false));
+ final String page = Network.getResponseData(Network.request("http://www.geocaching.com/track/log.aspx", params));
viewstates = Login.getViewstates(page);
diff --git a/main/src/cgeo/geocaching/connector/gc/GCBase.java b/main/src/cgeo/geocaching/connector/gc/GCBase.java
index 9d5ee3e..f5d3ee5 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCBase.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCBase.java
@@ -15,6 +15,7 @@ import cgeo.geocaching.geopoint.IConversion;
import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.network.Login;
import cgeo.geocaching.network.Network;
+import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.ui.Formatter;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.LeastRecentlyUsedMap;
@@ -126,36 +127,31 @@ public class GCBase {
for (Tile tile : tiles) {
if (!tileCache.containsKey(tile.hashCode())) {
-
- StringBuilder url = new StringBuilder();
- url.append("?x=").append(tile.getX()) // x tile
- .append("&y=").append(tile.getY()) // y tile
- .append("&z=").append(tile.getZoomlevel()); // zoom level
+ final Parameters params = new Parameters(
+ "x", String.valueOf(tile.getX()),
+ "y", String.valueOf(tile.getY()),
+ "z", String.valueOf(tile.getZoomlevel()),
+ "ep", "1");
if (tokens != null) {
- url.append("&k=").append(tokens[0]); // user session
- url.append("&st=").append(tokens[1]); // session token
+ params.put("k", tokens[0], "st", tokens[1]);
}
- url.append("&ep=1");
if (Settings.isExcludeMyCaches()) {
- url.append("&hf=1").append("&hh=1"); // hide found, hide hidden
+ params.put("hf", "1", "hh", "1"); // hide found, hide hidden
}
if (Settings.getCacheType() == CacheType.TRADITIONAL) {
- url.append("&ect=9,5,3,6,453,13,1304,137,11,4,8,1858"); // 2 = tradi 3 = multi 8 = mystery
- }
- if (Settings.getCacheType() == CacheType.MULTI) {
- url.append("&ect=9,5,2,6,453,13,1304,137,11,4,8,1858");
- }
- if (Settings.getCacheType() == CacheType.MYSTERY) {
- url.append("&ect=9,5,3,6,453,13,1304,137,11,4,2,1858");
+ params.put("ect", "9,5,3,6,453,13,1304,137,11,4,8,1858"); // 2 = tradi 3 = multi 8 = mystery
+ } else if (Settings.getCacheType() == CacheType.MULTI) {
+ params.put("ect", "9,5,2,6,453,13,1304,137,11,4,8,1858");
+ } else if (Settings.getCacheType() == CacheType.MYSTERY) {
+ params.put("ect", "9,5,3,6,453,13,1304,137,11,4,2,1858");
}
if (tile.getZoomlevel() != 14) {
- url.append("&_=").append(String.valueOf(System.currentTimeMillis()));
+ params.put("_", String.valueOf(System.currentTimeMillis()));
}
- // other types t.b.d
- final String urlString = url.toString();
+ // TODO: other types t.b.d
// The PNG must be requested first, otherwise the following request would always return with 204 - No Content
- Bitmap bitmap = Tile.requestMapTile(GCConstants.URL_MAP_TILE + urlString, referer);
+ Bitmap bitmap = Tile.requestMapTile(GCConstants.URL_MAP_TILE, params, referer);
// Check bitmap size
if (bitmap.getWidth() != Tile.TILE_SIZE ||
@@ -164,7 +160,7 @@ public class GCBase {
bitmap = null;
}
- String data = Tile.requestMapInfo(GCConstants.URL_MAP_INFO + urlString, referer);
+ String data = Tile.requestMapInfo(GCConstants.URL_MAP_INFO, params, referer);
if (StringUtils.isEmpty(data)) {
Log.e("GCBase.searchByViewport: No data from server for tile (" + tile.getX() + "/" + tile.getY() + ")");
} else {
@@ -362,7 +358,7 @@ public class GCBase {
/** Get user session & session token from the Live Map. Needed for following requests */
public static String[] getTokens() {
- final HttpResponse response = Network.request(GCConstants.URL_LIVE_MAP, null, false);
+ final HttpResponse response = Network.request(GCConstants.URL_LIVE_MAP);
final String data = Network.getResponseData(response);
String userSession = BaseUtils.getMatch(data, GCConstants.PATTERN_USERSESSION, "");
String sessionToken = BaseUtils.getMatch(data, GCConstants.PATTERN_SESSIONTOKEN, "");
@@ -371,18 +367,14 @@ public class GCBase {
public static SearchResult searchByGeocodes(final Set<String> geocodes) {
- SearchResult result = new SearchResult();
+ final SearchResult result = new SearchResult();
final String geocodeList = StringUtils.join(geocodes.toArray(), "|");
-
- String referer = GCConstants.URL_LIVE_MAP_DETAILS;
-
- StringBuilder url = new StringBuilder();
- url.append("?i=").append(geocodeList).append("&_=").append(String.valueOf(System.currentTimeMillis()));
- final String urlString = url.toString();
+ final String referer = GCConstants.URL_LIVE_MAP_DETAILS;
try {
- String data = Tile.requestMapInfo(referer + urlString, referer);
+ final Parameters params = new Parameters("i", geocodeList, "_", String.valueOf(System.currentTimeMillis()));
+ final String data = Tile.requestMapInfo(referer, params, referer);
// Example JSON information
// {"status":"success",
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 4794654..9f174a5 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -17,7 +17,6 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
-
import java.util.Set;
import java.util.regex.Pattern;
@@ -105,7 +104,7 @@ public class GCConnector extends AbstractConnector {
cgBase.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_loadpage);
- final String page = Network.requestLogged("http://www.geocaching.com/seek/cache_details.aspx", params, false, false, false);
+ final String page = Network.requestLogged("http://www.geocaching.com/seek/cache_details.aspx", params, false, false);
if (StringUtils.isEmpty(page)) {
final SearchResult search = new SearchResult();
diff --git a/main/src/cgeo/geocaching/connector/gc/Tile.java b/main/src/cgeo/geocaching/connector/gc/Tile.java
index fd51839..b639f03 100644
--- a/main/src/cgeo/geocaching/connector/gc/Tile.java
+++ b/main/src/cgeo/geocaching/connector/gc/Tile.java
@@ -3,10 +3,10 @@ package cgeo.geocaching.connector.gc;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.network.Network;
+import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.Log;
import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -207,21 +207,13 @@ public class Tile {
}
/** Request JSON informations for a tile */
- public static String requestMapInfo(final String url, final String referer) {
- final HttpGet request = new HttpGet(url);
- request.addHeader("Accept", "application/json, text/javascript, */*; q=0.01");
- request.addHeader("Referer", referer);
- request.addHeader("X-Requested-With", "XMLHttpRequest");
- return Network.getResponseData(Network.request(request), false);
+ public static String requestMapInfo(final String url, final Parameters params, final String referer) {
+ return Network.getResponseData(Network.request(url, params, new Parameters("Referer", referer)));
}
/** Request .png image for a tile. */
- public static Bitmap requestMapTile(final String url, final String referer) {
- final HttpGet request = new HttpGet(url);
- request.addHeader("Accept", "image/png,image/*;q=0.8,*/*;q=0.5");
- request.addHeader("Referer", referer);
- request.addHeader("X-Requested-With", "XMLHttpRequest");
- final HttpResponse response = Network.request(request);
+ public static Bitmap requestMapTile(final String url, final Parameters params, final String referer) {
+ final HttpResponse response = Network.request(url, params, new Parameters("Referer", referer));
try {
return response != null ? BitmapFactory.decodeStream(response.getEntity().getContent()) : null;
} catch (IOException e) {
diff --git a/main/src/cgeo/geocaching/gcvote/GCVote.java b/main/src/cgeo/geocaching/gcvote/GCVote.java
index 636a242..39e6a39 100644
--- a/main/src/cgeo/geocaching/gcvote/GCVote.java
+++ b/main/src/cgeo/geocaching/gcvote/GCVote.java
@@ -95,7 +95,7 @@ public final class GCVote {
params.put("waypoints", StringUtils.join(geocodes.toArray(), ','));
}
params.put("version", "cgeo");
- final String page = Network.getResponseData(Network.request("http://gcvote.com/getVotes.php", params, false, false, false));
+ final String page = Network.getResponseData(Network.request("http://gcvote.com/getVotes.php", params));
if (page == null) {
return null;
}
@@ -219,7 +219,7 @@ public final class GCVote {
"voteUser", String.format("%.1f", vote).replace(',', '.'),
"version", "cgeo");
- final String result = Network.getResponseData(Network.request("http://gcvote.com/setVote.php", params, false, false, false));
+ final String result = Network.getResponseData(Network.request("http://gcvote.com/setVote.php", params));
return result.trim().equalsIgnoreCase("ok");
}
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index cd89a06..fbcbaaf 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -80,7 +80,7 @@ public class HtmlImage implements Html.ImageGetter {
if (absoluteURL != null) {
try {
final File file = LocalStorage.getStorageFile(geocode, url, true, true);
- final HttpResponse httpResponse = Network.request(absoluteURL, null, false, file);
+ final HttpResponse httpResponse = Network.request(absoluteURL, null, file);
if (httpResponse != null) {
final int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode == 200) {
diff --git a/main/src/cgeo/geocaching/network/Login.java b/main/src/cgeo/geocaching/network/Login.java
index 200daaf..3eca55d 100644
--- a/main/src/cgeo/geocaching/network/Login.java
+++ b/main/src/cgeo/geocaching/network/Login.java
@@ -69,7 +69,7 @@ public abstract class Login {
if (cgBase.res != null) {
Login.setActualStatus(cgBase.res.getString(R.string.init_login_popup_working));
}
- HttpResponse loginResponse = Network.request("https://www.geocaching.com/login/default.aspx", null, false, false, false);
+ HttpResponse loginResponse = Network.request("https://www.geocaching.com/login/default.aspx");
String loginData = Network.getResponseData(loginResponse);
if (loginResponse != null && loginResponse.getStatusLine().getStatusCode() == 503 && BaseUtils.matches(loginData, GCConstants.PATTERN_MAINTENANCE)) {
return StatusCode.MAINTENANCE;
@@ -131,7 +131,7 @@ public abstract class Login {
}
public static StatusCode logout() {
- HttpResponse logoutResponse = Network.request("https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fdefault.aspx%3f", null, false, false, false);
+ HttpResponse logoutResponse = Network.request("https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fdefault.aspx%3f");
String logoutData = Network.getResponseData(logoutResponse);
if (logoutResponse != null && logoutResponse.getStatusLine().getStatusCode() == 503 && BaseUtils.matches(logoutData, GCConstants.PATTERN_MAINTENANCE)) {
return StatusCode.MAINTENANCE;
@@ -218,9 +218,9 @@ public abstract class Login {
if (previousPage != null && previousPage.indexOf(ENGLISH) >= 0) {
Log.i("Geocaching.com language already set to English");
// get find count
- getLoginStatus(Network.getResponseData(Network.request("http://www.geocaching.com/email/", null, false)));
+ getLoginStatus(Network.getResponseData(Network.request("http://www.geocaching.com/email/")));
} else {
- final String page = Network.getResponseData(Network.request("http://www.geocaching.com/default.aspx", null, false));
+ final String page = Network.getResponseData(Network.request("http://www.geocaching.com/default.aspx"));
getLoginStatus(page);
if (page == null) {
Log.e("Failed to read viewstates to set geocaching.com language");
@@ -238,7 +238,7 @@ public abstract class Login {
public static BitmapDrawable downloadAvatarAndGetMemberStatus(final Context context) {
try {
- final String profile = BaseUtils.replaceWhitespace(Network.getResponseData(Network.request("http://www.geocaching.com/my/", null, false)));
+ final String profile = BaseUtils.replaceWhitespace(Network.getResponseData(Network.request("http://www.geocaching.com/my/")));
Settings.setMemberStatus(BaseUtils.getMatch(profile, GCConstants.PATTERN_MEMBER_STATUS, true, null));
@@ -262,7 +262,7 @@ public abstract class Login {
*/
public static void detectGcCustomDate() {
- final String result = Network.getResponseData(Network.request("http://www.geocaching.com/account/ManagePreferences.aspx", null, false, false, false));
+ final String result = Network.getResponseData(Network.request("http://www.geocaching.com/account/ManagePreferences.aspx"));
if (null == result) {
Log.w("cgeoBase.detectGcCustomDate: result is null");
diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java
index 008f887..1629def 100644
--- a/main/src/cgeo/geocaching/network/Network.java
+++ b/main/src/cgeo/geocaching/network/Network.java
@@ -191,61 +191,91 @@ public abstract class Network {
* GET HTTP request
*
* @param uri
+ * the URI to request
* @param params
- * @param xContentType
+ * the parameters to add the the GET request
* @param my
* @param addF
* @return
*/
- public static HttpResponse request(final String uri, final Parameters params, boolean xContentType, boolean my, boolean addF) {
- return Network.request(uri, cgBase.addFToParams(params, my, addF), xContentType);
+ public static HttpResponse request(final String uri, final Parameters params, boolean my, boolean addF) {
+ return Network.request(uri, cgBase.addFToParams(params, my, addF));
}
/**
* GET HTTP request
*
* @param uri
+ * the URI to request
* @param params
- * @param xContentType
- * @param cacheFile
- * the name of the file storing the cached resource, or null not to use one
- * @return
+ * the parameters to add the the GET request
+ * @param headers
+ * the headers to add to the GET request
+ * @return the HTTP response
*/
- public static HttpResponse request(final String uri, final Parameters params, final boolean xContentType, final File cacheFile) {
+ public static HttpResponse request(final String uri, final Parameters params, final Parameters headers) {
final String fullUri = params == null ? uri : Uri.parse(uri).buildUpon().encodedQuery(params.toString()).build().toString();
final HttpRequestBase request = new HttpGet(fullUri);
request.setHeader("X-Requested-With", "XMLHttpRequest");
-
- if (xContentType) {
- request.setHeader("Content-Type", "application/x-www-form-urlencoded");
+ if (headers != null) {
+ for (final NameValuePair header : headers) {
+ request.setHeader(header.getName(), header.getValue());
+ }
}
+ return Network.request(request);
+ }
+
+ /**
+ * GET HTTP request
+ *
+ * @param uri
+ * the URI to request
+ * @param params
+ * the parameters to add the the GET request
+ * @param cacheFile
+ * the name of the file storing the cached resource, or null not to use one
+ * @return the HTTP response
+ */
+ public static HttpResponse request(final String uri, final Parameters params, final File cacheFile) {
if (cacheFile != null && cacheFile.exists()) {
final String etag = LocalStorage.getSavedHeader(cacheFile, "etag");
if (etag != null) {
- request.setHeader("If-None-Match", etag);
+ return request(uri, params, new Parameters("If-None-Match", etag));
} else {
final String lastModified = LocalStorage.getSavedHeader(cacheFile, "last-modified");
if (lastModified != null) {
- request.setHeader("If-Modified-Since", lastModified);
+ return request(uri, params, new Parameters("If-Modified-Since", lastModified));
}
}
}
- return Network.request(request);
+ return request(uri, params, (Parameters) null);
}
/**
* GET HTTP request
*
* @param uri
+ * the URI to request
* @param params
- * @param xContentType
- * @return
+ * the parameters to add the the GET request
+ * @return the HTTP response
+ */
+ public static HttpResponse request(final String uri, final Parameters params) {
+ return request(uri, params, (Parameters) null);
+ }
+
+ /**
+ * GET HTTP request
+ *
+ * @param uri
+ * the URI to request
+ * @return the HTTP response
*/
- public static HttpResponse request(final String uri, final Parameters params, final boolean xContentType) {
- return request(uri, params, xContentType, null);
+ public static HttpResponse request(final String uri) {
+ return request(uri, null, (Parameters) null);
}
public static HttpResponse request(final HttpRequestBase request) {
@@ -368,13 +398,13 @@ public abstract class Network {
* @param addF
* @return
*/
- public static String requestLogged(final String uri, final Parameters params, boolean xContentType, boolean my, boolean addF) {
- HttpResponse response = request(uri, params, xContentType, my, addF);
+ public static String requestLogged(final String uri, final Parameters params, boolean my, boolean addF) {
+ HttpResponse response = request(uri, params, my, addF);
String data = getResponseData(response);
if (!Login.getLoginStatus(data)) {
if (Login.login() == StatusCode.NO_ERROR) {
- response = request(uri, params, xContentType, my, addF);
+ response = request(uri, params, my, addF);
data = getResponseData(response);
} else {
Log.i("Working as guest.");
diff --git a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
index 78764c2..1419f5d 100644
--- a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
@@ -141,7 +141,7 @@ public class TwitterAuthorizationActivity extends AbstractActivity {
try {
final Parameters params = new Parameters();
OAuth.signOAuth(host, pathRequest, method, true, params, null, null);
- final String line = Network.getResponseData(Network.request("https://" + host + pathRequest, params, false));
+ final String line = Network.getResponseData(Network.request("https://" + host + pathRequest, params));
if (StringUtils.isNotBlank(line)) {
diff --git a/main/src/cgeo/geocaching/ui/DirectionImage.java b/main/src/cgeo/geocaching/ui/DirectionImage.java
index aa01b97..92ed64d 100644
--- a/main/src/cgeo/geocaching/ui/DirectionImage.java
+++ b/main/src/cgeo/geocaching/ui/DirectionImage.java
@@ -17,7 +17,7 @@ public class DirectionImage {
}
final HttpResponse httpResponse =
- Network.request("http://www.geocaching.com/ImgGen/seek/CacheDir.ashx", new Parameters("k", code), false);
+ Network.request("http://www.geocaching.com/ImgGen/seek/CacheDir.ashx", new Parameters("k", code));
if (httpResponse != null) {
LocalStorage.saveEntityToFile(httpResponse, getDirectionFile(geocode, true));
}
diff --git a/main/src/cgeo/geocaching/utils/LogTemplateProvider.java b/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
index 04a8c7a..fa4fa4e 100644
--- a/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
+++ b/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
@@ -89,7 +89,7 @@ public class LogTemplateProvider {
if (offline) {
return "";
}
- final String page = Network.getResponseData(Network.request("http://www.geocaching.com/email/", null, false, false, false));
+ final String page = Network.getResponseData(Network.request("http://www.geocaching.com/email/"));
current = parseFindCount(page);
}