summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/client/HttpsConnection.java')
-rw-r--r--app/src/main/java/app/fedilab/android/client/HttpsConnection.java259
1 files changed, 94 insertions, 165 deletions
diff --git a/app/src/main/java/app/fedilab/android/client/HttpsConnection.java b/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
index 46ba047b9..f5145ad73 100644
--- a/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
+++ b/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
@@ -147,10 +147,10 @@ public class HttpsConnection {
Map<String, Object> params = new LinkedHashMap<>();
if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
+ Iterator<Map.Entry<String, String>> it = paramaters.entrySet().iterator();
while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
+ Map.Entry<String, String> pair = it.next();
+ params.put(pair.getKey(), pair.getValue());
it.remove();
}
}
@@ -236,7 +236,7 @@ public class HttpsConnection {
httpsURLConnection.setInstanceFollowRedirects(false);
httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory(this.instance));
httpsURLConnection.setRequestMethod("HEAD");
- if (httpsURLConnection.getResponseCode() == 301) {
+ if (httpsURLConnection.getResponseCode() == 301 || httpsURLConnection.getResponseCode() == 302) {
Map<String, List<String>> map = httpsURLConnection.getHeaderFields();
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
if (entry.toString().toLowerCase().startsWith("location")) {
@@ -362,25 +362,25 @@ public class HttpsConnection {
public String post(String urlConnection, int timeout, HashMap<String, String> paramaters, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException {
- if (urlConnection.startsWith("https://")) {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
+ URL url = new URL(urlConnection);
+ Map<String, Object> params = new LinkedHashMap<>();
+ if (paramaters != null) {
+ Iterator<Map.Entry<String, String>> it = paramaters.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, String> pair = it.next();
+ params.put(pair.getKey(), pair.getValue());
+ it.remove();
}
- byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
+ }
+ StringBuilder postData = new StringBuilder();
+ for (Map.Entry<String, Object> param : params.entrySet()) {
+ if (postData.length() != 0) postData.append('&');
+ postData.append(param.getKey());
+ postData.append('=');
+ postData.append(param.getValue());
+ }
+ byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
+ if (urlConnection.startsWith("https://")) {
if (proxy != null)
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -429,25 +429,6 @@ public class HttpsConnection {
httpsURLConnection.getInputStream().close();
return response;
} else {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
- }
- byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
-
if (proxy != null)
httpURLConnection = (HttpURLConnection) url.openConnection(proxy);
else
@@ -499,10 +480,12 @@ public class HttpsConnection {
String postJson(String urlConnection, int timeout, JsonObject jsonObject, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException {
+
+ URL url = new URL(urlConnection);
+ byte[] postDataBytes;
+ postDataBytes = jsonObject.toString().getBytes(StandardCharsets.UTF_8);
if (urlConnection.startsWith("https://")) {
- URL url = new URL(urlConnection);
- byte[] postDataBytes;
- postDataBytes = jsonObject.toString().getBytes(StandardCharsets.UTF_8);
+
if (proxy != null)
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -553,9 +536,6 @@ public class HttpsConnection {
httpsURLConnection.getInputStream().close();
return response;
} else {
- URL url = new URL(urlConnection);
- byte[] postDataBytes = jsonObject.toString().getBytes(StandardCharsets.UTF_8);
-
if (proxy != null)
httpURLConnection = (HttpURLConnection) url.openConnection(proxy);
else
@@ -812,9 +792,15 @@ public class HttpsConnection {
public InputStream getPicture(final String downloadUrl) {
+
+ URL url;
+ try {
+ url = new URL(downloadUrl);
+ } catch (MalformedURLException e) {
+ return null;
+ }
if (downloadUrl.startsWith("https://")) {
try {
- URL url = new URL(downloadUrl);
if (proxy != null)
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -823,7 +809,7 @@ public class HttpsConnection {
httpsURLConnection.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = httpsURLConnection.getResponseCode();
// always check HTTP response code first
- if (responseCode == HttpURLConnection.HTTP_OK) {
+ if (responseCode >= 200 && responseCode < 400) {
// opens input stream from the HTTP connection
return httpsURLConnection.getInputStream();
}
@@ -835,10 +821,8 @@ public class HttpsConnection {
httpsURLConnection.getInputStream().close();
} catch (Exception ignored) {
}
- return null;
} else {
try {
- URL url = new URL(downloadUrl);
if (proxy != null)
httpURLConnection = (HttpURLConnection) url.openConnection(proxy);
else
@@ -846,7 +830,7 @@ public class HttpsConnection {
httpURLConnection.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = httpURLConnection.getResponseCode();
// always check HTTP response code first
- if (responseCode == HttpURLConnection.HTTP_OK) {
+ if (responseCode >= 200 && responseCode < 400) {
// opens input stream from the HTTP connection
return httpURLConnection.getInputStream();
}
@@ -858,8 +842,8 @@ public class HttpsConnection {
httpURLConnection.getInputStream().close();
} catch (Exception ignored) {
}
- return null;
}
+ return null;
}
private void uploadMedia(String urlConnection, InputStream avatar, InputStream header, String filename) {
@@ -923,27 +907,27 @@ public class HttpsConnection {
@SuppressWarnings("SameParameterValue")
public String patch(String urlConnection, int timeout, HashMap<String, String> paramaters, InputStream avatar, String avatarName, InputStream header, String headerName, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException {
- if (urlConnection.startsWith("https://")) {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
- }
- byte[] postDataBytes = (postData.toString()).getBytes(StandardCharsets.UTF_8);
+ URL url = new URL(urlConnection);
+ Map<String, Object> params = new LinkedHashMap<>();
+ if (paramaters != null) {
+ Iterator<Map.Entry<String, String>> it = paramaters.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, String> pair = it.next();
+ params.put(pair.getKey(), pair.getValue());
+ it.remove();
+ }
+ }
+ StringBuilder postData = new StringBuilder();
+ for (Map.Entry<String, Object> param : params.entrySet()) {
+ if (postData.length() != 0) postData.append('&');
+ postData.append(param.getKey());
+ postData.append('=');
+ postData.append(param.getValue());
+ }
+ byte[] postDataBytes = (postData.toString()).getBytes(StandardCharsets.UTF_8);
+ if (urlConnection.startsWith("https://")) {
if (proxy != null)
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -1006,25 +990,6 @@ public class HttpsConnection {
httpsURLConnection.getInputStream().close();
return response;
} else {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
- }
- byte[] postDataBytes = (postData.toString()).getBytes(StandardCharsets.UTF_8);
-
if (proxy != null)
httpURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -1088,26 +1053,27 @@ public class HttpsConnection {
}
public String put(String urlConnection, int timeout, HashMap<String, String> paramaters, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException {
- if (urlConnection.startsWith("https://")) {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
+
+ URL url = new URL(urlConnection);
+ Map<String, Object> params = new LinkedHashMap<>();
+ if (paramaters != null) {
+ Iterator<Map.Entry<String, String>> it = paramaters.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, String> pair = it.next();
+ params.put(pair.getKey(), pair.getValue());
+ it.remove();
}
- byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
+ }
+ StringBuilder postData = new StringBuilder();
+ for (Map.Entry<String, Object> param : params.entrySet()) {
+ if (postData.length() != 0) postData.append('&');
+ postData.append(param.getKey());
+ postData.append('=');
+ postData.append(param.getValue());
+ }
+ byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
+ if (urlConnection.startsWith("https://")) {
if (proxy != null)
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -1157,25 +1123,6 @@ public class HttpsConnection {
httpsURLConnection.getInputStream().close();
return response;
} else {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
- }
- byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
-
if (proxy != null)
httpURLConnection = (HttpURLConnection) url.openConnection(proxy);
else
@@ -1228,26 +1175,27 @@ public class HttpsConnection {
}
public int delete(String urlConnection, int timeout, HashMap<String, String> paramaters, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException {
- if (urlConnection.startsWith("https://")) {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
+
+ URL url = new URL(urlConnection);
+ Map<String, Object> params = new LinkedHashMap<>();
+ if (paramaters != null) {
+ Iterator<Map.Entry<String, String>> it = paramaters.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, String> pair = it.next();
+ params.put(pair.getKey(), pair.getValue());
+ it.remove();
}
- byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
+ }
+ StringBuilder postData = new StringBuilder();
+ for (Map.Entry<String, Object> param : params.entrySet()) {
+ if (postData.length() != 0) postData.append('&');
+ postData.append(param.getKey());
+ postData.append('=');
+ postData.append(param.getValue());
+ }
+ byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
+ if (urlConnection.startsWith("https://")) {
if (proxy != null)
httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy);
else
@@ -1292,25 +1240,6 @@ public class HttpsConnection {
throw new HttpsConnectionException(responseCode, error);
}
} else {
- URL url = new URL(urlConnection);
- Map<String, Object> params = new LinkedHashMap<>();
- if (paramaters != null) {
- Iterator it = paramaters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry) it.next();
- params.put(pair.getKey().toString(), pair.getValue());
- it.remove();
- }
- }
- StringBuilder postData = new StringBuilder();
- for (Map.Entry<String, Object> param : params.entrySet()) {
- if (postData.length() != 0) postData.append('&');
- postData.append(param.getKey());
- postData.append('=');
- postData.append(param.getValue());
- }
- byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
-
if (proxy != null)
httpURLConnection = (HttpURLConnection) url.openConnection(proxy);
else