|
@@ -32,6 +32,7 @@ import android.os.Binder;
|
|
import android.os.ParcelFileDescriptor;
|
|
import android.os.ParcelFileDescriptor;
|
|
import android.text.TextUtils;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import android.util.Log;
|
|
|
|
+import android.util.Pair;
|
|
|
|
|
|
import com.nextcloud.android.sso.aidl.IInputStreamService;
|
|
import com.nextcloud.android.sso.aidl.IInputStreamService;
|
|
import com.nextcloud.android.sso.aidl.NextcloudRequest;
|
|
import com.nextcloud.android.sso.aidl.NextcloudRequest;
|
|
@@ -70,9 +71,12 @@ import java.io.InputStreamReader;
|
|
import java.io.ObjectInputStream;
|
|
import java.io.ObjectInputStream;
|
|
import java.io.ObjectOutputStream;
|
|
import java.io.ObjectOutputStream;
|
|
import java.io.Serializable;
|
|
import java.io.Serializable;
|
|
|
|
+import java.util.Collection;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
+import androidx.annotation.VisibleForTesting;
|
|
|
|
+
|
|
import static com.nextcloud.android.sso.Constants.DELIMITER;
|
|
import static com.nextcloud.android.sso.Constants.DELIMITER;
|
|
import static com.nextcloud.android.sso.Constants.EXCEPTION_ACCOUNT_NOT_FOUND;
|
|
import static com.nextcloud.android.sso.Constants.EXCEPTION_ACCOUNT_NOT_FOUND;
|
|
import static com.nextcloud.android.sso.Constants.EXCEPTION_HTTP_REQUEST_FAILED;
|
|
import static com.nextcloud.android.sso.Constants.EXCEPTION_HTTP_REQUEST_FAILED;
|
|
@@ -331,7 +335,11 @@ public class InputStreamBinder extends IInputStreamService.Stub {
|
|
|
|
|
|
HttpMethodBase method = buildMethod(request, client.getBaseUri(), requestBodyInputStream);
|
|
HttpMethodBase method = buildMethod(request, client.getBaseUri(), requestBodyInputStream);
|
|
|
|
|
|
- method.setQueryString(convertMapToNVP(request.getParameter()));
|
|
|
|
|
|
+ if (!request.getParameterV2().isEmpty()) {
|
|
|
|
+ method.setQueryString(convertListToNVP(request.getParameterV2()));
|
|
|
|
+ } else {
|
|
|
|
+ method.setQueryString(convertMapToNVP(request.getParameter()));
|
|
|
|
+ }
|
|
method.addRequestHeader("OCS-APIREQUEST", "true");
|
|
method.addRequestHeader("OCS-APIREQUEST", "true");
|
|
|
|
|
|
for (Map.Entry<String, List<String>> header : request.getHeader().entrySet()) {
|
|
for (Map.Entry<String, List<String>> header : request.getHeader().entrySet()) {
|
|
@@ -394,7 +402,12 @@ public class InputStreamBinder extends IInputStreamService.Stub {
|
|
|
|
|
|
HttpMethodBase method = buildMethod(request, client.getBaseUri(), requestBodyInputStream);
|
|
HttpMethodBase method = buildMethod(request, client.getBaseUri(), requestBodyInputStream);
|
|
|
|
|
|
- method.setQueryString(convertMapToNVP(request.getParameter()));
|
|
|
|
|
|
+ if (!request.getParameterV2().isEmpty()) {
|
|
|
|
+ method.setQueryString(convertListToNVP(request.getParameterV2()));
|
|
|
|
+ } else {
|
|
|
|
+ method.setQueryString(convertMapToNVP(request.getParameter()));
|
|
|
|
+ }
|
|
|
|
+
|
|
method.addRequestHeader("OCS-APIREQUEST", "true");
|
|
method.addRequestHeader("OCS-APIREQUEST", "true");
|
|
|
|
|
|
for (Map.Entry<String, List<String>> header : request.getHeader().entrySet()) {
|
|
for (Map.Entry<String, List<String>> header : request.getHeader().entrySet()) {
|
|
@@ -482,7 +495,8 @@ public class InputStreamBinder extends IInputStreamService.Stub {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private static NameValuePair[] convertMapToNVP(Map<String, String> map) {
|
|
|
|
|
|
+ @VisibleForTesting
|
|
|
|
+ public static NameValuePair[] convertMapToNVP(Map<String, String> map) {
|
|
NameValuePair[] nvp = new NameValuePair[map.size()];
|
|
NameValuePair[] nvp = new NameValuePair[map.size()];
|
|
int i = 0;
|
|
int i = 0;
|
|
for (String key : map.keySet()) {
|
|
for (String key : map.keySet()) {
|
|
@@ -491,4 +505,15 @@ public class InputStreamBinder extends IInputStreamService.Stub {
|
|
}
|
|
}
|
|
return nvp;
|
|
return nvp;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @VisibleForTesting
|
|
|
|
+ public static NameValuePair[] convertListToNVP(Collection<Pair<String, String>> list) {
|
|
|
|
+ NameValuePair[] nvp = new NameValuePair[list.size()];
|
|
|
|
+ int i = 0;
|
|
|
|
+ for (Pair<String, String> pair : list) {
|
|
|
|
+ nvp[i] = new NameValuePair(pair.first, pair.second);
|
|
|
|
+ i++;
|
|
|
|
+ }
|
|
|
|
+ return nvp;
|
|
|
|
+ }
|
|
}
|
|
}
|