diff --git a/src/com/owncloud/android/lib/common/OwnCloudClientManager.java b/src/com/owncloud/android/lib/common/OwnCloudClientManager.java index 856a11ba..e7fe77af 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudClientManager.java +++ b/src/com/owncloud/android/lib/common/OwnCloudClientManager.java @@ -42,13 +42,13 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundExce public interface OwnCloudClientManager { - public OwnCloudClient getClientFor(OwnCloudAccount account, Context context) + OwnCloudClient getClientFor(OwnCloudAccount account, Context context) throws AccountNotFoundException, OperationCanceledException, AuthenticatorException, IOException; - public OwnCloudClient removeClientFor(OwnCloudAccount account); + OwnCloudClient removeClientFor(OwnCloudAccount account); - public void saveAllClients(Context context, String accountType) + void saveAllClients(Context context, String accountType) throws AccountNotFoundException, AuthenticatorException, IOException, OperationCanceledException; diff --git a/src/com/owncloud/android/lib/common/http/HttpClient.java b/src/com/owncloud/android/lib/common/http/HttpClient.java index f0f81693..3dfc8f7b 100644 --- a/src/com/owncloud/android/lib/common/http/HttpClient.java +++ b/src/com/owncloud/android/lib/common/http/HttpClient.java @@ -39,31 +39,29 @@ import okhttp3.Protocol; */ public class HttpClient { - private static OkHttpClient mOkHttpClient; - private static HttpInterceptor mOkHttpInterceptor; + private static OkHttpClient sOkHttpClient; + private static HttpInterceptor sOkHttpInterceptor; public static OkHttpClient getOkHttpClient() { - if (mOkHttpClient == null) { - - mOkHttpClient = new OkHttpClient.Builder() - .addInterceptor(mOkHttpInterceptor) + if (sOkHttpClient == null) { + sOkHttpClient = new OkHttpClient.Builder() + .addInterceptor(getOkHttpInterceptor()) .protocols(Arrays.asList(Protocol.HTTP_1_1)) .followRedirects(false) .build(); } - - return mOkHttpClient; + return sOkHttpClient; } public static HttpInterceptor getOkHttpInterceptor() { - if(mOkHttpInterceptor == null) { - mOkHttpInterceptor = new HttpInterceptor() + if (sOkHttpInterceptor == null) { + sOkHttpInterceptor = new HttpInterceptor() .addRequestInterceptor(new UserAgentInterceptor( // TODO Try to get rid of this dependency OwnCloudClientManagerFactory.getUserAgent() ) ); } - return mOkHttpInterceptor; + return sOkHttpInterceptor; } } \ No newline at end of file diff --git a/src/com/owncloud/android/lib/common/network/FileRequestBody.java b/src/com/owncloud/android/lib/common/network/FileRequestBody.java new file mode 100644 index 00000000..d8e65acc --- /dev/null +++ b/src/com/owncloud/android/lib/common/network/FileRequestBody.java @@ -0,0 +1,48 @@ +package com.owncloud.android.lib.common.network; + +import android.util.Log; + +import java.io.File; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okio.Buffer; +import okio.BufferedSink; +import okio.Okio; +import okio.Source; + +import static android.content.ContentValues.TAG; + +public class FileRequestBody extends RequestBody { + + MediaType mContentType; + File mFile; + + FileRequestBody(MediaType contentType, File file) { + mContentType = contentType; + mFile = file; + } + + @Override + public MediaType contentType() { + return mContentType; + } + + @Override + public void writeTo(BufferedSink sink) { + Source source; + try { + source = Okio.source(mFile); + //sink.writeAll(source); + Buffer buffer = new Buffer(); + Long remaining = contentLength(); + + for (long readCount; (readCount = source.read(buffer, 2048)) != -1;) { + sink.write(buffer, readCount); + Log.d(TAG, "source size: " + contentLength() + " remaining bytes: " + (remaining -= readCount)); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java index 80412b11..26cdee54 100644 --- a/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/MoveRemoteFileOperation.java @@ -105,7 +105,6 @@ public class MoveRemoteFileOperation extends RemoteOperation { return new RemoteOperationResult(ResultCode.INVALID_MOVE_INTO_DESCENDANT); } - /// perform remote operation RemoteOperationResult result = null; try { diff --git a/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java index e4d2d5ed..72855cc0 100644 --- a/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/UploadRemoteFileOperation.java @@ -27,6 +27,7 @@ package com.owncloud.android.lib.resources.files; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.http.HttpConstants; import com.owncloud.android.lib.common.http.HttpUtils; +import com.owncloud.android.lib.common.network.FileRequestBody; import com.owncloud.android.lib.common.network.FileRequestEntity; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; import com.owncloud.android.lib.common.network.ProgressiveDataTransferer; @@ -157,7 +158,7 @@ public class UploadRemoteFileOperation extends RemoteOperation { MediaType mediaType = MediaType.parse(mMimeType); mPutMethod.setRequestBody( - RequestBody.create(mediaType, fileToUpload) + FileRequestBody.create(mediaType, fileToUpload) ); int status = client.executeHttpMethod(mPutMethod); diff --git a/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java b/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java index f001c5d0..2231ac14 100644 --- a/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java +++ b/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java @@ -175,7 +175,6 @@ public class GetRemoteUserAvatarOperation extends RemoteOperation { } catch (IOException o) { Log_OC.e(TAG, "Unexpected exception closing output stream ", o); } - client.exhaustResponse(getMethod.getResponseAsStream()); } }