Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0da3028 authored by desperateCoder's avatar desperateCoder
Browse files

Use Stream as MultipartBody rather than String

parent 5cf63ccc
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ package com.nextcloud.android.sso.aidl;

import androidx.core.util.ObjectsCompat;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
@@ -41,6 +43,7 @@ public class NextcloudRequest implements Serializable {
    private String token;
    private String packageName;
    private String accountName;
    private InputStream bodyAsStream = null;
    private boolean followRedirects;

    private NextcloudRequest() { }
@@ -55,6 +58,8 @@ public class NextcloudRequest implements Serializable {
        this.followRedirects = ncr.followRedirects;
        header = new HashMap<>(ncr.header);
        parameter = new HashMap<>(ncr.parameter);
        bodyAsStream = ncr.bodyAsStream;

    }

    public static class Builder implements Serializable {
@@ -94,6 +99,10 @@ public class NextcloudRequest implements Serializable {
            ncr.requestBody = requestBody;
            return this;
        }
        public Builder setRequestBodyAsStream(InputStream requestBody) {
            ncr.bodyAsStream = requestBody;
            return this;
        }

        public Builder setUrl(String url) {
            ncr.url = url;
@@ -110,6 +119,8 @@ public class NextcloudRequest implements Serializable {
            return this;
        }



        /**
         * Default value: true
         * @param followRedirects
@@ -169,6 +180,13 @@ public class NextcloudRequest implements Serializable {
        return this.followRedirects;
    }

    public InputStream getBodyAsStream() {
        return bodyAsStream;
    }

    public void setBodyAsStream(InputStream bodyAsStream) {
        this.bodyAsStream = bodyAsStream;
    }

    @Override
    public boolean equals(Object obj) {
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class NextcloudAPI {
     * @throws Exception or SSOException
     */
     public InputStream performNetworkRequest(NextcloudRequest request) throws Exception {
        return networkRequest.performNetworkRequest(request, null);
        return networkRequest.performNetworkRequest(request, request.getBodyAsStream());
    }

    public Response performRequestV2(final @NonNull Type type, NextcloudRequest request) throws Exception {
+6 −4
Original line number Diff line number Diff line
@@ -11,8 +11,10 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@@ -165,7 +167,7 @@ public class NextcloudRetrofitServiceMethod<T> {
            }
        }
        if (isMultipart) {
            rBuilder.setRequestBody(bodyToString(multipartBuilder.build()));
            rBuilder.setRequestBodyAsStream(bodyToStream(multipartBuilder.build()));
        }

        NextcloudRequest request = rBuilder
@@ -199,15 +201,15 @@ public class NextcloudRetrofitServiceMethod<T> {
        return nextcloudAPI.performRequest(this.returnType, request);
    }

    private static String bodyToString(final RequestBody request){
    private static InputStream bodyToStream(final RequestBody request){
        try {
            final RequestBody copy = request;
            final Buffer buffer = new Buffer();
            copy.writeTo(buffer);
            return buffer.readUtf8();
            return buffer.inputStream();
        }
        catch (final IOException e) {
            return "did not work";
            throw new RuntimeException("failed to build request-body");
        }
    }