Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolFi <wolfi@wolfi.es>2022-03-24 22:46:47 +0300
committerWolFi <wolfi@wolfi.es>2022-03-24 22:46:47 +0300
commit982fc25fc67c2c6267ad00d68235fc0ccdc08bdf (patch)
treed05b4185f07ee1aadeabdc3e5fb5e4973f2965db
parent59737817472980e1a3326573e59453a7a54a7082 (diff)
parentb4cf0d2f310010603a072574fd0c10b482eddb8d (diff)
Merge branch 'fix-json-requests'
-rw-r--r--app/build.gradle8
-rw-r--r--app/src/main/java/es/wolfi/passman/API/Core.java20
-rw-r--r--app/src/main/java/es/wolfi/passman/API/Credential.java25
-rw-r--r--app/src/main/java/es/wolfi/passman/API/Vault.java36
-rw-r--r--build.gradle2
-rw-r--r--gradle.properties.example2
-rw-r--r--gradle/wrapper/gradle-wrapper.properties4
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