From 1631b9b55a107767e7d5f8c7febf2c1897a12647 Mon Sep 17 00:00:00 2001 From: davigonz Date: Mon, 11 Jun 2018 15:05:16 +0200 Subject: [PATCH] Get rid of OkHttp dependencies in OwnCloudClient --- .../android/lib/common/OwnCloudClient.java | 58 ++-------------- .../lib/common/OwnCloudClientFactory.java | 11 +-- .../lib/common/SingleSessionManager.java | 7 +- .../OwnCloudBasicCredentials.java | 9 ++- .../OwnCloudSamlSsoCredentials.java | 4 +- .../lib/common/http/HttpBaseMethod.java | 8 ++- .../android/lib/common/http/HttpClient.java | 67 +++++++++++++++++++ .../android/lib/common/http/HttpUtils.java | 37 ++++++++++ .../interceptors/BasicAuthInterceptor.java | 5 +- .../http/methods/nonwebdav/DeleteMethod.java | 7 +- .../http/methods/nonwebdav/GetMethod.java | 9 ++- .../http/methods/nonwebdav/HttpMethod.java | 10 ++- .../http/methods/nonwebdav/PostMethod.java | 6 +- .../http/methods/nonwebdav/PutMethod.java | 6 +- .../common/http/methods/webdav/DavMethod.java | 9 ++- .../http/methods/webdav/PropfindMethod.java | 5 +- .../files/ExistenceCheckRemoteOperation.java | 4 +- .../files/ReadRemoteFolderOperation.java | 1 - .../shares/CreateRemoteShareOperation.java | 3 +- .../shares/GetRemoteShareOperation.java | 4 +- .../shares/GetRemoteShareesOperation.java | 2 +- .../GetRemoteSharesForFileOperation.java | 2 +- .../shares/GetRemoteSharesOperation.java | 4 +- .../shares/RemoveRemoteShareOperation.java | 4 +- .../shares/UpdateRemoteShareOperation.java | 12 ++-- .../GetRemoteCapabilitiesOperation.java | 2 +- .../status/GetRemoteStatusOperation.java | 8 ++- .../users/GetRemoteUserAvatarOperation.java | 2 +- .../users/GetRemoteUserInfoOperation.java | 2 +- 29 files changed, 177 insertions(+), 131 deletions(-) create mode 100644 src/com/owncloud/android/lib/common/http/HttpClient.java create mode 100644 src/com/owncloud/android/lib/common/http/HttpUtils.java diff --git a/src/com/owncloud/android/lib/common/OwnCloudClient.java b/src/com/owncloud/android/lib/common/OwnCloudClient.java index f99d139d..6c8a5652 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudClient.java +++ b/src/com/owncloud/android/lib/common/OwnCloudClient.java @@ -33,8 +33,6 @@ import android.net.Uri; import com.owncloud.android.lib.common.authentication.OwnCloudCredentials; import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory; import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials; -import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; -import com.owncloud.android.lib.common.http.interceptors.UserAgentInterceptor; import com.owncloud.android.lib.common.http.HttpBaseMethod; import com.owncloud.android.lib.common.network.RedirectionPath; import com.owncloud.android.lib.common.utils.Log_OC; @@ -55,10 +53,6 @@ import org.apache.commons.httpclient.params.HttpParams; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; - -import okhttp3.OkHttpClient; -import okhttp3.Protocol; public class OwnCloudClient extends HttpClient { @@ -103,9 +97,6 @@ public class OwnCloudClient extends HttpClient { private String mRedirectedLocation; - private static OkHttpClient mOkHttpClient = null; - private static HttpInterceptor mOkHttpInterceptor = null; - /** * Constructor */ @@ -144,14 +135,6 @@ public class OwnCloudClient extends HttpClient { super(connectionMgr); - if (mOkHttpClient == null) { - mOkHttpClient = new OkHttpClient.Builder() - .addInterceptor(getBaseOkHttpInterceptor()) - .protocols(Arrays.asList(Protocol.HTTP_1_1)) - .followRedirects(false) - .build(); - } - if (baseUri == null) { throw new IllegalArgumentException("Parameter 'baseUri' cannot be NULL"); } @@ -172,24 +155,6 @@ public class OwnCloudClient extends HttpClient { clearCredentials(); } - /** - * {@link HttpInterceptor} singleton - * @return {@link HttpInterceptor} instance with user agent - */ - public HttpInterceptor getBaseOkHttpInterceptor() { - - if (mOkHttpInterceptor == null) { - mOkHttpInterceptor = new HttpInterceptor(). - addRequestInterceptor( - new UserAgentInterceptor( - OwnCloudClientManagerFactory.getUserAgent() - ) - ); - } - - return mOkHttpInterceptor; - } - private void applyProxySettings() { String proxyHost = System.getProperty("http.proxyHost"); String proxyPortSt = System.getProperty("http.proxyPort"); @@ -291,9 +256,10 @@ public class OwnCloudClient extends HttpClient { checkFirstRedirection(method); - if (mOkHttpClient.followRedirects()) { - status = followRedirection(method).getLastStatus(); - } + // TODO +// if (mOkHttpClient.followRedirects()) { +// status = followRedirection(method).getLastStatus(); +// } repeatWithFreshCredentials = checkUnauthorizedAccess(status, repeatCounter); if (repeatWithFreshCredentials) { @@ -483,18 +449,6 @@ public class OwnCloudClient extends HttpClient { return mCredentials; } - public void setFollowRedirects(boolean followRedirects) { - mOkHttpClient - .newBuilder() - .followRedirects(followRedirects) - .followSslRedirects(followRedirects) - .build(); - } - - public boolean getFollowRedirects() { - return mOkHttpClient.followRedirects(); - } - private void logCookiesAtRequest(Header[] headers, String when) { int counter = 0; for (int i = 0; i < headers.length; i++) { @@ -597,10 +551,6 @@ public class OwnCloudClient extends HttpClient { return mAccount; } - public OkHttpClient getOkHttpClient() { - return mOkHttpClient; - } - /** * Enables or disables silent refresh of credentials, if supported by credentials themselves. */ diff --git a/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java b/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java index ff9e32b0..89b45bce 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java +++ b/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java @@ -40,6 +40,7 @@ import android.os.Bundle; import com.owncloud.android.lib.common.accounts.AccountTypeUtils; import com.owncloud.android.lib.common.accounts.AccountUtils; import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException; +import com.owncloud.android.lib.common.http.HttpClient; import com.owncloud.android.lib.common.network.NetworkUtils; import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory; import com.owncloud.android.lib.common.utils.Log_OC; @@ -175,11 +176,13 @@ public class OwnCloudClientFactory { OwnCloudClient client = new OwnCloudClient(uri, NetworkUtils.getMultiThreadedConnManager()); client.setDefaultTimeouts(DEFAULT_DATA_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT); - client.setFollowRedirects(followRedirects); + + HttpClient.getOkHttpClient() + .newBuilder() + .followRedirects(followRedirects); + client.setContext(context); return client; } - - -} +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/common/SingleSessionManager.java b/src/com/owncloud/android/lib/common/SingleSessionManager.java index 05396480..ae422550 100644 --- a/src/com/owncloud/android/lib/common/SingleSessionManager.java +++ b/src/com/owncloud/android/lib/common/SingleSessionManager.java @@ -45,7 +45,7 @@ import com.owncloud.android.lib.common.utils.Log_OC; /** * Implementation of {@link OwnCloudClientManager} - *

+ * * TODO check multithreading safety * * @author David A. Velasco @@ -232,8 +232,5 @@ public class SingleSessionManager implements OwnCloudClientManager { if (!recentUri.equals(reusedClient.getBaseUri())) { reusedClient.setBaseUri(recentUri); } - } - - -} +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java b/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java index 7a1fdb65..ee0bf6bb 100644 --- a/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java +++ b/src/com/owncloud/android/lib/common/authentication/OwnCloudBasicCredentials.java @@ -24,6 +24,7 @@ package com.owncloud.android.lib.common.authentication; import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.http.HttpClient; import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor.RequestInterceptor; @@ -36,8 +37,6 @@ import org.apache.commons.httpclient.auth.BasicScheme; import java.util.ArrayList; import java.util.List; -import okhttp3.Credentials; - public class OwnCloudBasicCredentials implements OwnCloudCredentials { private static final String TAG = OwnCloudCredentials.class.getSimpleName(); @@ -65,7 +64,7 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { List authPrefs = new ArrayList<>(1); authPrefs.add(AuthPolicy.BASIC); - ArrayList requestInterceptors = client.getBaseOkHttpInterceptor().getRequestInterceptors(); + ArrayList requestInterceptors = HttpClient.getOkHttpInterceptor().getRequestInterceptors(); // Clear previous basic credentials for (RequestInterceptor requestInterceptor : requestInterceptors) { @@ -74,9 +73,9 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { } } - client.getBaseOkHttpInterceptor() + HttpClient.getOkHttpInterceptor() .addRequestInterceptor( - new BasicAuthInterceptor(Credentials.basic(mUsername, mPassword)) + new BasicAuthInterceptor(mUsername, mPassword) ); //TODO Update from here down diff --git a/src/com/owncloud/android/lib/common/authentication/OwnCloudSamlSsoCredentials.java b/src/com/owncloud/android/lib/common/authentication/OwnCloudSamlSsoCredentials.java index 0f475428..cf7036b0 100644 --- a/src/com/owncloud/android/lib/common/authentication/OwnCloudSamlSsoCredentials.java +++ b/src/com/owncloud/android/lib/common/authentication/OwnCloudSamlSsoCredentials.java @@ -45,7 +45,9 @@ public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { client.getParams().setAuthenticationPreemptive(false); client.getParams().setCredentialCharset(OwnCloudCredentialsFactory.CREDENTIAL_CHARSET); client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); - client.setFollowRedirects(false); + + // TODO +// client.setFollowRedirects(false); Uri serverUri = client.getBaseUri(); diff --git a/src/com/owncloud/android/lib/common/http/HttpBaseMethod.java b/src/com/owncloud/android/lib/common/http/HttpBaseMethod.java index 82f07431..122e0650 100644 --- a/src/com/owncloud/android/lib/common/http/HttpBaseMethod.java +++ b/src/com/owncloud/android/lib/common/http/HttpBaseMethod.java @@ -24,8 +24,6 @@ package com.owncloud.android.lib.common.http; -import com.owncloud.android.lib.common.utils.Log_OC; - import java.io.IOException; import java.io.InputStream; @@ -33,7 +31,6 @@ import okhttp3.Headers; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import okhttp3.internal.http2.Header; /** * Wrapper to perform http calls transparently by using: @@ -44,9 +41,14 @@ import okhttp3.internal.http2.Header; */ public abstract class HttpBaseMethod { public abstract int execute() throws Exception; + protected OkHttpClient mOkHttpClient; protected Request mRequest; protected Response mResponse; + public HttpBaseMethod () { + mOkHttpClient = HttpClient.getOkHttpClient(); + } + // Request public Headers getRequestHeaders() { return mRequest.headers(); diff --git a/src/com/owncloud/android/lib/common/http/HttpClient.java b/src/com/owncloud/android/lib/common/http/HttpClient.java new file mode 100644 index 00000000..52bf9227 --- /dev/null +++ b/src/com/owncloud/android/lib/common/http/HttpClient.java @@ -0,0 +1,67 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2018 ownCloud GmbH. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +package com.owncloud.android.lib.common.http; + +import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; +import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; +import com.owncloud.android.lib.common.http.interceptors.UserAgentInterceptor; + +import java.util.Arrays; + +import okhttp3.OkHttpClient; +import okhttp3.Protocol; + +/** + * Client used to perform network operations + * @author David González Verdugo + */ +public class HttpClient { + + private static OkHttpClient mOkHttpClient; + private static HttpInterceptor mOkHttpInterceptor; + + public static OkHttpClient getOkHttpClient() { + if (mOkHttpClient == null) { + + mOkHttpInterceptor = new HttpInterceptor() + .addRequestInterceptor(new UserAgentInterceptor( + // TODO Try to get rid of this dependency + OwnCloudClientManagerFactory.getUserAgent() + ) + ); + + mOkHttpClient = new OkHttpClient.Builder() + .addInterceptor(mOkHttpInterceptor) + .protocols(Arrays.asList(Protocol.HTTP_1_1)) + .followRedirects(false) + .build(); + } + return mOkHttpClient; + } + + public static HttpInterceptor getOkHttpInterceptor() { + return mOkHttpInterceptor; + } +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/common/http/HttpUtils.java b/src/com/owncloud/android/lib/common/http/HttpUtils.java new file mode 100644 index 00000000..588d5aa3 --- /dev/null +++ b/src/com/owncloud/android/lib/common/http/HttpUtils.java @@ -0,0 +1,37 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2018 ownCloud GmbH. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +package com.owncloud.android.lib.common.http; + +import okhttp3.HttpUrl; + +/** + * @author David González Verdugo + */ +public class HttpUtils { + + public static HttpUrl stringUrlToHttpUrl(String url) { + return HttpUrl.parse(url); + } +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/common/http/interceptors/BasicAuthInterceptor.java b/src/com/owncloud/android/lib/common/http/interceptors/BasicAuthInterceptor.java index 171f6fab..a61a33fd 100644 --- a/src/com/owncloud/android/lib/common/http/interceptors/BasicAuthInterceptor.java +++ b/src/com/owncloud/android/lib/common/http/interceptors/BasicAuthInterceptor.java @@ -24,6 +24,7 @@ package com.owncloud.android.lib.common.http.interceptors; +import okhttp3.Credentials; import okhttp3.Request; public class BasicAuthInterceptor implements HttpInterceptor.RequestInterceptor { @@ -31,8 +32,8 @@ public class BasicAuthInterceptor implements HttpInterceptor.RequestInterceptor private static final String AUTHORIZATION_HEADER = "Authorization"; private String mCredentials; - public BasicAuthInterceptor(String credentials) { - mCredentials = credentials; + public BasicAuthInterceptor(String username, String password) { + mCredentials = Credentials.basic(username, password); } @Override diff --git a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/DeleteMethod.java b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/DeleteMethod.java index 5d47758c..24c3d2a8 100644 --- a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/DeleteMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/DeleteMethod.java @@ -24,17 +24,14 @@ package com.owncloud.android.lib.common.http.methods.nonwebdav; -import okhttp3.OkHttpClient; -import okhttp3.Request; - /** * OkHttp delete calls wrapper * @author David González Verdugo */ public class DeleteMethod extends HttpMethod{ - public DeleteMethod(OkHttpClient okHttpClient, String httpUrl) { - super(okHttpClient, httpUrl); + public DeleteMethod(String httpUrl) { + super(httpUrl); } @Override diff --git a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/GetMethod.java b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/GetMethod.java index 0f74252c..a1a117ed 100644 --- a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/GetMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/GetMethod.java @@ -27,7 +27,6 @@ package com.owncloud.android.lib.common.http.methods.nonwebdav; import java.io.IOException; import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; /** * OkHttp get calls wrapper @@ -35,12 +34,12 @@ import okhttp3.OkHttpClient; */ public class GetMethod extends HttpMethod { - public GetMethod(OkHttpClient okHttpClient, String httpUrl) { - super(okHttpClient, httpUrl); + public GetMethod(String httpUrl) { + super(httpUrl); } - public GetMethod(OkHttpClient okHttpClient, HttpUrl httpUrl) { - super(okHttpClient, httpUrl); + public GetMethod(HttpUrl httpUrl) { + super(httpUrl); } @Override diff --git a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/HttpMethod.java b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/HttpMethod.java index 5ed95ec7..7d3ddb5a 100644 --- a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/HttpMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/HttpMethod.java @@ -29,7 +29,6 @@ import com.owncloud.android.lib.common.http.HttpBaseMethod; import java.io.IOException; import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; import okhttp3.Request; /** @@ -38,17 +37,16 @@ import okhttp3.Request; * @author David González Verdugo */ public abstract class HttpMethod extends HttpBaseMethod { - protected OkHttpClient mOkHttpClient; - public HttpMethod(OkHttpClient okHttpClient, String httpUrl) { - mOkHttpClient = okHttpClient; + public HttpMethod(String httpUrl) { + super(); mRequest = new Request.Builder() .url(httpUrl) .build(); } - public HttpMethod(OkHttpClient okHttpClient, HttpUrl httpUrl) { - mOkHttpClient = okHttpClient; + public HttpMethod(HttpUrl httpUrl) { + super(); mRequest = new Request.Builder() .url(httpUrl) .build(); diff --git a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PostMethod.java b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PostMethod.java index 91939029..34e2aa5b 100644 --- a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PostMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PostMethod.java @@ -24,8 +24,6 @@ package com.owncloud.android.lib.common.http.methods.nonwebdav; -import okhttp3.OkHttpClient; -import okhttp3.Request; import okhttp3.RequestBody; /** @@ -36,8 +34,8 @@ public class PostMethod extends HttpMethod { private RequestBody mRequestBody; - public PostMethod(OkHttpClient okHttpClient, String httpUrl, RequestBody requestBody){ - super(okHttpClient, httpUrl); + public PostMethod(String httpUrl, RequestBody requestBody){ + super(httpUrl); mRequestBody = requestBody; } diff --git a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PutMethod.java b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PutMethod.java index f7270f35..04d9abd8 100644 --- a/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PutMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/nonwebdav/PutMethod.java @@ -24,16 +24,14 @@ package com.owncloud.android.lib.common.http.methods.nonwebdav; -import okhttp3.OkHttpClient; -import okhttp3.Request; import okhttp3.RequestBody; public class PutMethod extends HttpMethod{ private RequestBody mRequestBody; - public PutMethod(OkHttpClient okHttpClient, String httpUrl, RequestBody requestBody){ - super(okHttpClient, httpUrl); + public PutMethod(String httpUrl, RequestBody requestBody){ + super(httpUrl); mRequestBody = requestBody; } diff --git a/src/com/owncloud/android/lib/common/http/methods/webdav/DavMethod.java b/src/com/owncloud/android/lib/common/http/methods/webdav/DavMethod.java index de75047a..eb26e2bd 100644 --- a/src/com/owncloud/android/lib/common/http/methods/webdav/DavMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/webdav/DavMethod.java @@ -29,7 +29,6 @@ import com.owncloud.android.lib.common.http.HttpBaseMethod; import at.bitfire.dav4android.DavOCResource; import at.bitfire.dav4android.DavResource; import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; /** * Wrapper to perform WebDAV (dav4android) calls @@ -39,8 +38,12 @@ public abstract class DavMethod extends HttpBaseMethod { protected DavResource mDavResource; - public DavMethod(OkHttpClient okHttpClient, HttpUrl httpUrl) { - mDavResource = new DavOCResource(okHttpClient, httpUrl); + public DavMethod(HttpUrl httpUrl) { + super(); + mDavResource = new DavOCResource( + mOkHttpClient, + httpUrl + ); } public DavResource getDavResource() { diff --git a/src/com/owncloud/android/lib/common/http/methods/webdav/PropfindMethod.java b/src/com/owncloud/android/lib/common/http/methods/webdav/PropfindMethod.java index e8b85564..8e788f6c 100644 --- a/src/com/owncloud/android/lib/common/http/methods/webdav/PropfindMethod.java +++ b/src/com/owncloud/android/lib/common/http/methods/webdav/PropfindMethod.java @@ -33,7 +33,6 @@ import at.bitfire.dav4android.exception.DavException; import at.bitfire.dav4android.exception.HttpException; import at.bitfire.dav4android.exception.UnauthorizedException; import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; /** * Propfind calls wrapper @@ -44,8 +43,8 @@ public class PropfindMethod extends DavMethod { private int mDepth; private Set mMembers; - public PropfindMethod(OkHttpClient okHttpClient, HttpUrl httpUrl, int depth) { - super(okHttpClient, httpUrl); + public PropfindMethod(HttpUrl httpUrl, int depth) { + super(httpUrl); mDepth = depth; }; diff --git a/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java b/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java index 93b4ced4..a71f941b 100644 --- a/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ExistenceCheckRemoteOperation.java @@ -26,6 +26,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.http.methods.webdav.PropfindMethod; import com.owncloud.android.lib.common.network.RedirectionPath; import com.owncloud.android.lib.common.network.WebdavUtils; @@ -81,8 +82,7 @@ public class ExistenceCheckRemoteOperation extends RemoteOperation { // client.setFollowRedirects(false); PropfindMethod propfindMethod = new PropfindMethod( - client.getOkHttpClient(), - HttpUrl.parse(client.getNewWebDavUri() + WebdavUtils.encodePath(mPath)), + HttpUtils.stringUrlToHttpUrl(client.getNewWebDavUri() + WebdavUtils.encodePath(mPath)), 0); int status = client.executeHttpMethod(propfindMethod); diff --git a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java index d8b9bcf4..f90a654d 100644 --- a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java @@ -74,7 +74,6 @@ public class ReadRemoteFolderOperation extends RemoteOperation { try { PropfindMethod propfindMethod = new PropfindMethod( - client.getOkHttpClient(), HttpUrl.parse(client.getNewWebDavUri() + WebdavUtils.encodePath(mRemotePath)), 1); diff --git a/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java b/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java index 669df7b8..6e658374 100644 --- a/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java @@ -231,8 +231,7 @@ public class CreateRemoteShareOperation extends RemoteOperation { Uri.Builder uriBuilder = requestUri.buildUpon(); uriBuilder.appendEncodedPath(ShareUtils.SHARING_API_PATH); - PostMethod postMethod = new PostMethod(client.getOkHttpClient(), - uriBuilder.build().toString(), formBody); + PostMethod postMethod = new PostMethod(uriBuilder.build().toString(), formBody); postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); postMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); diff --git a/src/com/owncloud/android/lib/resources/shares/GetRemoteShareOperation.java b/src/com/owncloud/android/lib/resources/shares/GetRemoteShareOperation.java index c7c2df93..87a8d975 100644 --- a/src/com/owncloud/android/lib/resources/shares/GetRemoteShareOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/GetRemoteShareOperation.java @@ -63,8 +63,8 @@ public class GetRemoteShareOperation extends RemoteOperation { uriBuilder.appendEncodedPath(ShareUtils.SHARING_API_PATH); uriBuilder.appendEncodedPath(Long.toString(mRemoteId)); - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), - uriBuilder.build().toString()); + GetMethod getMethod = new GetMethod(uriBuilder.build().toString()); + getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(getMethod); diff --git a/src/com/owncloud/android/lib/resources/shares/GetRemoteShareesOperation.java b/src/com/owncloud/android/lib/resources/shares/GetRemoteShareesOperation.java index ba49698a..4da1a810 100644 --- a/src/com/owncloud/android/lib/resources/shares/GetRemoteShareesOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/GetRemoteShareesOperation.java @@ -130,7 +130,7 @@ public class GetRemoteShareesOperation extends RemoteOperation{ uriBuilder.appendQueryParameter(PARAM_PAGE, String.valueOf(mPage)); uriBuilder.appendQueryParameter(PARAM_PER_PAGE, String.valueOf(mPerPage)); - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), uriBuilder.build().toString()); + GetMethod getMethod = new GetMethod(uriBuilder.build().toString()); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(getMethod); diff --git a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java index 95bc2019..02b36900 100644 --- a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesForFileOperation.java @@ -93,7 +93,7 @@ public class GetRemoteSharesForFileOperation extends RemoteOperation { httpBuilder.addQueryParameter(PARAM_RESHARES, String.valueOf(mReshares)); httpBuilder.addQueryParameter(PARAM_SUBFILES, String.valueOf(mSubfiles)); - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), httpBuilder.build()); + GetMethod getMethod = new GetMethod(httpBuilder.build()); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(getMethod); diff --git a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java index 436448db..796991fa 100644 --- a/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/GetRemoteSharesOperation.java @@ -57,8 +57,7 @@ public class GetRemoteSharesOperation extends RemoteOperation { Uri.Builder uriBuilder = requestUri.buildUpon(); uriBuilder.appendEncodedPath(ShareUtils.SHARING_API_PATH); - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), - uriBuilder.build().toString()); + GetMethod getMethod = new GetMethod(uriBuilder.build().toString()); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(getMethod); @@ -75,7 +74,6 @@ public class GetRemoteSharesOperation extends RemoteOperation { } else { result = new RemoteOperationResult(getMethod); } - } catch (Exception e) { result = new RemoteOperationResult(e); Log_OC.e(TAG, "Exception while getting remote shares ", e); diff --git a/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java b/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java index ca4f3cea..68510d37 100644 --- a/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/RemoveRemoteShareOperation.java @@ -72,8 +72,8 @@ public class RemoveRemoteShareOperation extends RemoteOperation { uriBuilder.appendEncodedPath(ShareUtils.SHARING_API_PATH); uriBuilder.appendEncodedPath(String.valueOf(mRemoteShareId)); - DeleteMethod deleteMethod = new DeleteMethod(client.getOkHttpClient(), - uriBuilder.build().toString()); + DeleteMethod deleteMethod = new DeleteMethod(uriBuilder.build().toString()); + deleteMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(deleteMethod); diff --git a/src/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java b/src/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java index 9c04085d..a7074c9e 100644 --- a/src/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java +++ b/src/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java @@ -40,8 +40,6 @@ import java.util.Calendar; import java.util.Locale; import okhttp3.FormBody; -import okhttp3.Request; - /** * Updates parameters of an existing Share resource, known its remote ID. @@ -199,17 +197,15 @@ public class UpdateRemoteShareOperation extends RemoteOperation { formBodyBuilder.add(PARAM_PERMISSIONS, Integer.toString(mPermissions)); } + FormBody formBody = formBodyBuilder.build(); + Uri requestUri = client.getBaseUri(); Uri.Builder uriBuilder = requestUri.buildUpon(); uriBuilder.appendEncodedPath(ShareUtils.SHARING_API_PATH.substring(1)); uriBuilder.appendEncodedPath(Long.toString(mRemoteId)); - FormBody formBody = formBodyBuilder.build(); - - PutMethod putMethod = new PutMethod(client.getOkHttpClient(), - uriBuilder.build().toString(), formBody); - putMethod.setRequestHeader("Content-Type", - "application/x-www-form-urlencoded; charset=utf-8"); + PutMethod putMethod = new PutMethod(uriBuilder.build().toString(), formBody); + putMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); putMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(putMethod); diff --git a/src/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.java b/src/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.java index 849cdf21..e22663b2 100644 --- a/src/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.java +++ b/src/com/owncloud/android/lib/resources/status/GetRemoteCapabilitiesOperation.java @@ -130,7 +130,7 @@ public class GetRemoteCapabilitiesOperation extends RemoteOperation { String url = uriBuilder.build().toString(); - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), url); + GetMethod getMethod = new GetMethod(url); getMethod.addRequestHeader(OCS_API_HEADER, OCS_API_HEADER_VALUE); int status = client.executeHttpMethod(getMethod); diff --git a/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java b/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java index 0c54a162..8cea17b6 100644 --- a/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java +++ b/src/com/owncloud/android/lib/resources/status/GetRemoteStatusOperation.java @@ -29,6 +29,7 @@ import android.net.ConnectivityManager; import android.net.Uri; import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.http.HttpClient; import com.owncloud.android.lib.common.http.HttpConstants; import com.owncloud.android.lib.common.http.methods.nonwebdav.GetMethod; import com.owncloud.android.lib.common.operations.RemoteOperation; @@ -78,8 +79,11 @@ public class GetRemoteStatusOperation extends RemoteOperation { try { String url = baseUrlSt + OwnCloudClient.STATUS_PATH; - client.setFollowRedirects(false); - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), url); + HttpClient.getOkHttpClient() + .newBuilder() + .followRedirects(false); + + GetMethod getMethod = new GetMethod(url); int status = client.executeHttpMethod(getMethod); diff --git a/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java b/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java index 187d4ce2..4097f1f9 100644 --- a/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java +++ b/src/com/owncloud/android/lib/resources/users/GetRemoteUserAvatarOperation.java @@ -86,7 +86,7 @@ public class GetRemoteUserAvatarOperation extends RemoteOperation { ; Log_OC.d(TAG, "avatar URI: " + url); - getMethod = new GetMethod(client.getOkHttpClient(), url); + getMethod = new GetMethod(url); int status = client.executeHttpMethod(getMethod); if (isSuccess(status)) { diff --git a/src/com/owncloud/android/lib/resources/users/GetRemoteUserInfoOperation.java b/src/com/owncloud/android/lib/resources/users/GetRemoteUserInfoOperation.java index be2d98d8..a5ee07da 100644 --- a/src/com/owncloud/android/lib/resources/users/GetRemoteUserInfoOperation.java +++ b/src/com/owncloud/android/lib/resources/users/GetRemoteUserInfoOperation.java @@ -76,7 +76,7 @@ public class GetRemoteUserInfoOperation extends RemoteOperation { String url = client.getBaseUri() + OCS_ROUTE; - GetMethod getMethod = new GetMethod(client.getOkHttpClient(), url); + GetMethod getMethod = new GetMethod(url); int status = client.executeHttpMethod(getMethod); if (isSuccess(status)) {