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

Commit 57c17a93 authored by Alexandre Roux's avatar Alexandre Roux
Browse files

implementing body inputstream following NextCloud App

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

interface IInputStreamService {
    ParcelFileDescriptor performNextcloudRequestAndBodyStream(in ParcelFileDescriptor input, in ParcelFileDescriptor requestBodyParcelFileDescriptor);
    ParcelFileDescriptor performNextcloudRequest(in ParcelFileDescriptor input);
}
+26 −4
Original line number Diff line number Diff line
@@ -235,7 +235,6 @@ public class NextcloudAPI {
        return result;
    }


     /**
     * The InputStreams needs to be closed after reading from it
     *
@@ -244,10 +243,22 @@ public class NextcloudAPI {
     * @throws Exception or SSOException
     */
    public InputStream performNetworkRequest(NextcloudRequest request) throws Exception {
        return performNetworkRequest(request, null);
    }

    /**
     * The InputStreams needs to be closed after reading from it
     *
     * @param request {@link NextcloudRequest} request to be executed on server via Files app
     * @param requestBodyInputStream inputstream to be sent to the server
     * @return InputStream answer from server as InputStream
     * @throws Exception or SSOException
     */
    public InputStream performNetworkRequest(NextcloudRequest request, InputStream requestBodyInputStream) throws Exception {
        InputStream os = null;
        Exception exception = null;
        try {
            ParcelFileDescriptor output = performAidlNetworkRequest(request);
            ParcelFileDescriptor output = performAidlNetworkRequest(request, requestBodyInputStream);
            os = new ParcelFileDescriptor.AutoCloseInputStream(output);
            exception = deserializeObject(os);
        } catch (ClassNotFoundException e) {
@@ -272,7 +283,7 @@ public class NextcloudAPI {
     * @return
     * @throws IOException
     */
    private ParcelFileDescriptor performAidlNetworkRequest(NextcloudRequest request)
    private ParcelFileDescriptor performAidlNetworkRequest(NextcloudRequest request, InputStream requestBodyInputStream)
            throws IOException, RemoteException, NextcloudApiNotRespondingException {

        // Check if we are on the main thread
@@ -302,7 +313,18 @@ public class NextcloudAPI {
                    }
                });

        ParcelFileDescriptor output = mService.performNextcloudRequest(input);
        ParcelFileDescriptor requestBodyParcelFileDescriptor = null;
        if(requestBodyInputStream != null)	
            requestBodyParcelFileDescriptor = ParcelFileDescriptorUtil.pipeFrom(requestBodyInputStream,
                new IThreadListener() {
                            @Override
                            public void onThreadFinished(Thread thread) {
                                Log.d(TAG, "copy data from service finished");
                            }
                        });


        ParcelFileDescriptor output = mService.performNextcloudRequestAndBodyStream(input, requestBodyParcelFileDescriptor);

        return output;
    }