diff options
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.java | 259 |
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 |