diff options
author | WolFi <wolfi@wolfi.es> | 2022-03-24 22:46:47 +0300 |
---|---|---|
committer | WolFi <wolfi@wolfi.es> | 2022-03-24 22:46:47 +0300 |
commit | 982fc25fc67c2c6267ad00d68235fc0ccdc08bdf (patch) | |
tree | d05b4185f07ee1aadeabdc3e5fb5e4973f2965db | |
parent | 59737817472980e1a3326573e59453a7a54a7082 (diff) | |
parent | b4cf0d2f310010603a072574fd0c10b482eddb8d (diff) |
Merge branch 'fix-json-requests'
-rw-r--r-- | app/build.gradle | 8 | ||||
-rw-r--r-- | app/src/main/java/es/wolfi/passman/API/Core.java | 20 | ||||
-rw-r--r-- | app/src/main/java/es/wolfi/passman/API/Credential.java | 25 | ||||
-rw-r--r-- | app/src/main/java/es/wolfi/passman/API/Vault.java | 36 | ||||
-rw-r--r-- | build.gradle | 2 | ||||
-rw-r--r-- | gradle.properties.example | 2 | ||||
-rw-r--r-- | gradle/wrapper/gradle-wrapper.properties | 4 |
7 files changed, 46 insertions, 51 deletions
diff --git a/app/build.gradle b/app/build.gradle index 00ab28d..a8b4bdb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,7 +27,7 @@ android { } } compileSdkVersion 31 - buildToolsVersion '30.0.2' + buildToolsVersion '30.0.3' defaultConfig { applicationId "es.wolfi.app.passman" minSdkVersion 21 @@ -105,8 +105,8 @@ dependencies { androidTestImplementation('androidx.test.espresso:espresso-core:3.4.0', { exclude group: 'com.android.support', module: 'support-annotations' }) - implementation 'androidx.appcompat:appcompat:1.4.0' - implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' implementation 'com.jakewharton:butterknife:10.2.3' implementation 'com.koushikdutta.ion:ion:3.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' @@ -115,7 +115,7 @@ dependencies { implementation 'commons-codec:commons-codec:1.15' implementation 'com.loopj.android:android-async-http:1.4.11' implementation 'com.caverock:androidsvg:1.4' - implementation 'org.bouncycastle:bcpkix-jdk15on:1.69' + implementation 'org.bouncycastle:bcpkix-jdk15on:1.70' implementation 'com.vdurmont:semver4j:3.1.0' testImplementation 'junit:junit:4.13.2' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' diff --git a/app/src/main/java/es/wolfi/passman/API/Core.java b/app/src/main/java/es/wolfi/passman/API/Core.java index 9347e45..30b9321 100644 --- a/app/src/main/java/es/wolfi/passman/API/Core.java +++ b/app/src/main/java/es/wolfi/passman/API/Core.java @@ -30,14 +30,15 @@ import android.widget.Toast; import com.koushikdutta.async.future.FutureCallback; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; -import com.loopj.android.http.RequestParams; import org.json.JSONException; import org.json.JSONObject; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; +import cz.msebera.android.httpclient.entity.StringEntity; import es.wolfi.app.ResponseHandlers.CoreAPIGETResponseHandler; import es.wolfi.app.passman.OfflineStorage; import es.wolfi.app.passman.OfflineStorageValues; @@ -49,6 +50,7 @@ import es.wolfi.utils.KeyStoreUtils; public abstract class Core { protected static final String LOG_TAG = "API_LIB"; + protected static final String JSON_CONTENT_TYPE = "application/json"; protected static String host; protected static String host_internal; @@ -108,7 +110,7 @@ public abstract class Core { client.setConnectTimeout(getConnectTimeout(c)); client.setResponseTimeout(getResponseTimeout(c)); client.setMaxRetriesAndTimeout(getConnectRetries(c), getConnectTimeout(c)); - client.addHeader("Content-Type", "application/json"); + client.addHeader("Content-Type", JSON_CONTENT_TYPE); client.get(host_internal.concat(endpoint), responseHandler); } @@ -119,12 +121,12 @@ public abstract class Core { client.setConnectTimeout(getConnectTimeout(c)); client.setResponseTimeout(getResponseTimeout(c)); client.setMaxRetriesAndTimeout(getConnectRetries(c), getConnectTimeout(c)); - client.addHeader("Content-Type", "application/json"); + client.addHeader("Content-Type", JSON_CONTENT_TYPE); client.get(host.concat(endpoint), responseHandler); } - public static void requestAPI(Context c, String endpoint, RequestParams postDataParams, String requestType, final AsyncHttpResponseHandler responseHandler) - throws MalformedURLException { + public static void requestAPI(Context c, String endpoint, JSONObject jsonPostData, String requestType, final AsyncHttpResponseHandler responseHandler) + throws MalformedURLException, UnsupportedEncodingException { URL url = new URL(host.concat(endpoint)); @@ -133,16 +135,16 @@ public abstract class Core { client.setConnectTimeout(getConnectTimeout(c)); client.setResponseTimeout(getResponseTimeout(c)); client.setMaxRetriesAndTimeout(getConnectRetries(c), getConnectTimeout(c)); - //client.addHeader("Content-Type", "application/json; utf-8"); client.addHeader("Accept", "application/json, text/plain, */*"); + StringEntity entity = new StringEntity(jsonPostData.toString()); if (requestType.equals("POST")) { - client.post(url.toString(), postDataParams, responseHandler); + client.post(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); } else if (requestType.equals("PATCH")) { - client.patch(url.toString(), postDataParams, responseHandler); + client.patch(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); } else if (requestType.equals("DELETE")) { - client.delete(url.toString(), postDataParams, responseHandler); + client.delete(c, url.toString(), entity, JSON_CONTENT_TYPE, responseHandler); } } diff --git a/app/src/main/java/es/wolfi/passman/API/Credential.java b/app/src/main/java/es/wolfi/passman/API/Credential.java index 6df5cf8..09db5fa 100644 --- a/app/src/main/java/es/wolfi/passman/API/Credential.java +++ b/app/src/main/java/es/wolfi/passman/API/Credential.java @@ -26,12 +26,12 @@ import android.content.Context; import android.util.Log; import com.loopj.android.http.AsyncHttpResponseHandler; -import com.loopj.android.http.RequestParams; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; @@ -385,10 +385,8 @@ public class Credential extends Core implements Filterable { return params; } - public RequestParams getAsRequestParams(boolean forUpdate, boolean useJsonStreamer) { - RequestParams params = new RequestParams(); - params.setUseJsonStreamer(useJsonStreamer); - + public JSONObject getAsJsonObjectForApiRequest(boolean forUpdate) throws JSONException { + JSONObject params = new JSONObject(); JSONObject icon = null; if (forUpdate) { @@ -496,32 +494,31 @@ public class Credential extends Core implements Filterable { public void save(Context c, final AsyncHttpResponseHandler responseHandler) { try { - requestAPI(c, "credentials", getAsRequestParams(false, true), "POST", responseHandler); - } catch (MalformedURLException e) { + requestAPI(c, "credentials", getAsJsonObjectForApiRequest(false), "POST", responseHandler); + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } public void update(Context c, final AsyncHttpResponseHandler responseHandler) { try { - requestAPI(c, "credentials/" + getGuid(), getAsRequestParams(true, true), "PATCH", responseHandler); - } catch (MalformedURLException e) { + requestAPI(c, "credentials/" + getGuid(), getAsJsonObjectForApiRequest(true), "PATCH", responseHandler); + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } public void sendFileDeleteRequest(Context c, int file_id, final AsyncHttpResponseHandler responseHandler) { - RequestParams params = new RequestParams(); + JSONObject params = new JSONObject(); try { requestAPI(c, "file/" + file_id, params, "DELETE", responseHandler); - } catch (MalformedURLException e) { + } catch (MalformedURLException | UnsupportedEncodingException e) { e.printStackTrace(); } } public void uploadFile(Context c, String encodedFile, String fileName, String mimeType, int fileSize, final AsyncHttpResponseHandler responseHandler, ProgressDialog progress) { - RequestParams params = new RequestParams(); - params.setUseJsonStreamer(true); + JSONObject params = new JSONObject(); progress.setMessage(c.getString(R.string.wait_while_encrypting)); try { @@ -531,7 +528,7 @@ public class Credential extends Core implements Filterable { params.put("size", fileSize); progress.setMessage(c.getString(R.string.wait_while_uploading)); requestAPI(c, "file", params, "POST", responseHandler); - } catch (MalformedURLException e) { + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/es/wolfi/passman/API/Vault.java b/app/src/main/java/es/wolfi/passman/API/Vault.java index 54efbeb..0358d5c 100644 --- a/app/src/main/java/es/wolfi/passman/API/Vault.java +++ b/app/src/main/java/es/wolfi/passman/API/Vault.java @@ -30,7 +30,6 @@ import android.util.Pair; import com.koushikdutta.async.future.FutureCallback; import com.loopj.android.http.AsyncHttpResponseHandler; -import com.loopj.android.http.RequestParams; import org.bouncycastle.openssl.jcajce.JcaPEMWriter; import org.json.JSONArray; @@ -39,6 +38,7 @@ import org.json.JSONObject; import java.io.IOException; import java.io.StringWriter; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.nio.charset.StandardCharsets; import java.security.KeyPair; @@ -387,9 +387,8 @@ public class Vault extends Core implements Filterable { return obj.toString(); } - public static RequestParams getAsRequestParams(Vault vault, boolean useJsonStreamer, boolean forEdit) { - RequestParams params = new RequestParams(); - params.setUseJsonStreamer(useJsonStreamer); + public static JSONObject getAsJsonObjectForApiRequest(Vault vault, boolean forEdit) throws JSONException { + JSONObject params = new JSONObject(); params.put("vault_id", vault.vault_id); params.put("guid", vault.guid); @@ -426,12 +425,11 @@ public class Vault extends Core implements Filterable { if (keyPair != null) { public_sharing_key = keyPair.first; - RequestParams params = getAsRequestParams(this, true, false); - params.put("private_sharing_key", encryptRawStringData(keyPair.second)); - try { + JSONObject params = getAsJsonObjectForApiRequest(this, false); + params.put("private_sharing_key", encryptRawStringData(keyPair.second)); Vault.requestAPI(context, "vaults/" + guid + "/sharing-keys", params, "POST", createInitialSharingKeysResponseHandler); - } catch (MalformedURLException e) { + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } @@ -469,23 +467,21 @@ public class Vault extends Core implements Filterable { } public void save(Context c, final AsyncHttpResponseHandler responseHandler) { - RequestParams params = new RequestParams(); - params.setUseJsonStreamer(true); - params.put("vault_name", this.name); + JSONObject params = new JSONObject(); try { + params.put("vault_name", this.name); requestAPI(c, "vaults", params, "POST", responseHandler); - } catch (MalformedURLException e) { + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } public void edit(Context c, final AsyncHttpResponseHandler responseHandler) { - RequestParams params = getAsRequestParams(this, true, true); - try { + JSONObject params = getAsJsonObjectForApiRequest(this, true); requestAPI(c, "vaults/" + this.guid, params, "PATCH", responseHandler); - } catch (MalformedURLException e) { + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } @@ -497,7 +493,7 @@ public class Vault extends Core implements Filterable { * @param responseHandler */ public void deleteVaultContents(Context context, final AsyncHttpResponseHandler responseHandler) { - RequestParams collectionToDelete = new RequestParams(); + JSONObject collectionToDelete = new JSONObject(); JSONArray fileIds = new JSONArray(); for (Credential c : this.getCredentials()) { @@ -506,10 +502,10 @@ public class Vault extends Core implements Filterable { } } - collectionToDelete.put("file_ids", fileIds); try { + collectionToDelete.put("file_ids", fileIds); requestAPI(context, "files/delete", collectionToDelete, "POST", responseHandler); - } catch (MalformedURLException e) { + } catch (MalformedURLException | JSONException | UnsupportedEncodingException e) { e.printStackTrace(); } } @@ -522,8 +518,8 @@ public class Vault extends Core implements Filterable { */ public void delete(Context context, final AsyncHttpResponseHandler responseHandler) { try { - requestAPI(context, "vaults/" + this.guid, new RequestParams(), "DELETE", responseHandler); - } catch (MalformedURLException e) { + requestAPI(context, "vaults/" + this.guid, new JSONObject(), "DELETE", responseHandler); + } catch (MalformedURLException | UnsupportedEncodingException e) { e.printStackTrace(); } } diff --git a/build.gradle b/build.gradle index 01385d1..ad34db2 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' + classpath 'com.android.tools.build:gradle:7.1.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle.properties.example b/gradle.properties.example index 27ecda5..32427f1 100644 --- a/gradle.properties.example +++ b/gradle.properties.example @@ -25,4 +25,4 @@ RELEASE_KEY_ALIAS=release RELEASE_KEY_PASSWORD=release store key android.useAndroidX=true android.enableJetifier=true -android.jetifier.ignorelist=bcprov-jdk15on-1.69.jar +android.jetifier.ignorelist=bcprov-jdk15on-1.70.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1f8c2ed..bcb0351 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jan 03 15:47:04 GMT 2022 +#Tue Mar 22 14:20:29 GMT 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME |