mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +00:00 
			
		
		
		
	Refactor interceptors and include move headers
This commit is contained in:
		
							parent
							
								
									ed073d6db0
								
							
						
					
					
						commit
						1d80067f85
					
				| @ -25,20 +25,9 @@ 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.BarearAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor.RequestInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.HttpConstants; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import okhttp3.Credentials; | ||||
| 
 | ||||
| public class OwnCloudBasicCredentials implements OwnCloudCredentials { | ||||
| 
 | ||||
| @ -62,21 +51,13 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { | ||||
| 
 | ||||
|     @Override | ||||
|     public void applyTo(OwnCloudClient client) { | ||||
|         ArrayList<RequestInterceptor> requestInterceptors = HttpClient.getOkHttpInterceptor().getRequestInterceptors(); | ||||
| 
 | ||||
|         // Clear previous basic credentials | ||||
|         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||
|             if (requestInterceptor instanceof BasicAuthInterceptor | ||||
|                     || requestInterceptor instanceof BarearAuthInterceptor | ||||
|                     || requestInterceptor instanceof SamlAuthInterceptor) { | ||||
|                 requestInterceptors.remove(requestInterceptor); | ||||
|             } | ||||
|         } | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.BASIC_AUTHORIZATION_HEADER); | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.BEARER_AUTHORIZATION_HEADER); | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.COOKIE_HEADER); | ||||
| 
 | ||||
|         HttpClient.getOkHttpInterceptor() | ||||
|                 .addRequestInterceptor( | ||||
|                         new BasicAuthInterceptor(mUsername, mPassword) | ||||
|                 ); | ||||
|         HttpClient.addHeaderForAllRequests(HttpConstants.BASIC_AUTHORIZATION_HEADER, | ||||
|                 Credentials.basic(mUsername, mPassword)); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -98,5 +79,4 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { | ||||
|     public boolean authTokenCanBeRefreshed() { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| } | ||||
| @ -1,5 +1,5 @@ | ||||
| /* ownCloud Android Library is available under MIT license | ||||
|  *   Copyright (C) 2016 ownCloud GmbH. | ||||
|  *   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 | ||||
| @ -23,15 +23,9 @@ | ||||
|  */ | ||||
| package com.owncloud.android.lib.common.authentication; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| 
 | ||||
| 
 | ||||
| import com.owncloud.android.lib.common.OwnCloudClient; | ||||
| import com.owncloud.android.lib.common.http.HttpClient; | ||||
| import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.HttpConstants; | ||||
| 
 | ||||
| public class OwnCloudBearerCredentials implements OwnCloudCredentials { | ||||
| 
 | ||||
| @ -45,21 +39,12 @@ public class OwnCloudBearerCredentials implements OwnCloudCredentials { | ||||
| 
 | ||||
|     @Override | ||||
|     public void applyTo(OwnCloudClient client) { | ||||
|         // Clear previous credentials | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.BASIC_AUTHORIZATION_HEADER); | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.BEARER_AUTHORIZATION_HEADER); | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.COOKIE_HEADER); | ||||
| 
 | ||||
|         final ArrayList<HttpInterceptor.RequestInterceptor> requestInterceptors = | ||||
|                 HttpClient.getOkHttpInterceptor().getRequestInterceptors(); | ||||
| 
 | ||||
|         // Clear previous basic credentials | ||||
|         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||
|             if (requestInterceptor instanceof BasicAuthInterceptor | ||||
|                 || requestInterceptor instanceof BarearAuthInterceptor | ||||
|                 || requestInterceptor instanceof SamlAuthInterceptor) { | ||||
|                     requestInterceptors.remove(requestInterceptor); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         HttpClient.getOkHttpInterceptor() | ||||
|                 .addRequestInterceptor(new BarearAuthInterceptor(mAccessToken)); | ||||
|         HttpClient.addHeaderForAllRequests(HttpConstants.BEARER_AUTHORIZATION_HEADER, mAccessToken); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -82,5 +67,4 @@ public class OwnCloudBearerCredentials implements OwnCloudCredentials { | ||||
|     public boolean authTokenCanBeRefreshed() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| } | ||||
| @ -1,5 +1,5 @@ | ||||
| /* ownCloud Android Library is available under MIT license | ||||
|  *   Copyright (C) 2016 ownCloud GmbH. | ||||
|  *   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 | ||||
| @ -26,12 +26,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.BarearAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import com.owncloud.android.lib.common.http.HttpConstants; | ||||
| 
 | ||||
| public class OwnCloudCredentialsFactory { | ||||
| 
 | ||||
| @ -71,16 +66,10 @@ public class OwnCloudCredentialsFactory { | ||||
| 
 | ||||
|         @Override | ||||
|         public void applyTo(OwnCloudClient client) { | ||||
|             ArrayList<HttpInterceptor.RequestInterceptor> requestInterceptors = HttpClient.getOkHttpInterceptor().getRequestInterceptors(); | ||||
| 
 | ||||
|             // Clear previous basic credentials | ||||
|             for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||
|                 if (requestInterceptor instanceof BasicAuthInterceptor | ||||
|                         || requestInterceptor instanceof BarearAuthInterceptor | ||||
|                         || requestInterceptor instanceof SamlAuthInterceptor) { | ||||
|                     requestInterceptors.remove(requestInterceptor); | ||||
|                 } | ||||
|             } | ||||
|             HttpClient.deleteHeaderForAllRequests(HttpConstants.BASIC_AUTHORIZATION_HEADER); | ||||
|             HttpClient.deleteHeaderForAllRequests(HttpConstants.BEARER_AUTHORIZATION_HEADER); | ||||
|             HttpClient.deleteHeaderForAllRequests(HttpConstants.COOKIE_HEADER); | ||||
|         } | ||||
| 
 | ||||
|         @Override | ||||
| @ -104,5 +93,4 @@ public class OwnCloudCredentialsFactory { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| } | ||||
| @ -1,5 +1,5 @@ | ||||
| /* ownCloud Android Library is available under MIT license | ||||
|  *   Copyright (C) 2016 ownCloud GmbH. | ||||
|  *   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 | ||||
| @ -25,13 +25,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.BarearAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||
| import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| 
 | ||||
| import com.owncloud.android.lib.common.http.HttpConstants; | ||||
| 
 | ||||
| public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { | ||||
| 
 | ||||
| @ -45,20 +39,12 @@ public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { | ||||
| 
 | ||||
|     @Override | ||||
|     public void applyTo(OwnCloudClient client) { | ||||
|         final ArrayList<HttpInterceptor.RequestInterceptor> requestInterceptors = | ||||
|                 HttpClient.getOkHttpInterceptor().getRequestInterceptors(); | ||||
|         // Clear previous credentials | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.BASIC_AUTHORIZATION_HEADER); | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.BEARER_AUTHORIZATION_HEADER); | ||||
|         HttpClient.deleteHeaderForAllRequests(HttpConstants.COOKIE_HEADER); | ||||
| 
 | ||||
|         // Clear previous basic credentials | ||||
|         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||
|             if (requestInterceptor instanceof BasicAuthInterceptor | ||||
|                     || requestInterceptor instanceof BarearAuthInterceptor | ||||
|                     || requestInterceptor instanceof SamlAuthInterceptor) { | ||||
|                 requestInterceptors.remove(requestInterceptor); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         HttpClient.getOkHttpInterceptor() | ||||
|                 .addRequestInterceptor(new SamlAuthInterceptor(mSessionCookie)); | ||||
|         HttpClient.addHeaderForAllRequests(HttpConstants.COOKIE_HEADER, mSessionCookie); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -81,5 +67,4 @@ public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { | ||||
|     public boolean authTokenCanBeRefreshed() { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| } | ||||
| @ -25,19 +25,19 @@ | ||||
| package com.owncloud.android.lib.common.http; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.concurrent.TimeUnit; | ||||
| 
 | ||||
| import com.facebook.stetho.okhttp3.StethoInterceptor; | ||||
| import com.owncloud.android.lib.BuildConfig; | ||||
| 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 com.owncloud.android.lib.common.http.interceptors.RequestHeaderInterceptor; | ||||
| import com.owncloud.android.lib.common.network.AdvancedX509TrustManager; | ||||
| import com.owncloud.android.lib.common.network.NetworkUtils; | ||||
| import com.owncloud.android.lib.common.utils.Log_OC; | ||||
| 
 | ||||
| import org.apache.http.conn.ssl.BrowserCompatHostnameVerifier; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| 
 | ||||
| import javax.net.ssl.SSLContext; | ||||
| @ -58,7 +58,6 @@ public class HttpClient { | ||||
|     private static HttpInterceptor sOkHttpInterceptor; | ||||
|     private static Context sContext; | ||||
| 
 | ||||
| 
 | ||||
|     public static void setContext(Context context) { | ||||
|         sContext = context; | ||||
|     } | ||||
| @ -90,14 +89,10 @@ public class HttpClient { | ||||
|         return sOkHttpClient; | ||||
|     } | ||||
| 
 | ||||
|     public static HttpInterceptor getOkHttpInterceptor() { | ||||
|     private static HttpInterceptor getOkHttpInterceptor() { | ||||
|         if (sOkHttpInterceptor == null) { | ||||
|             sOkHttpInterceptor = new HttpInterceptor() | ||||
|                     .addRequestInterceptor(new UserAgentInterceptor( | ||||
|                                     // TODO Try to get rid of this dependency | ||||
|                                     OwnCloudClientManagerFactory.getUserAgent() | ||||
|                             ) | ||||
|                     ); | ||||
|             sOkHttpInterceptor = new HttpInterceptor(); | ||||
|             addHeaderForAllRequests(HttpConstants.USER_AGENT_HEADER, OwnCloudClientManagerFactory.getUserAgent()); | ||||
|         } | ||||
|         return sOkHttpInterceptor; | ||||
|     } | ||||
| @ -118,4 +113,20 @@ public class HttpClient { | ||||
|         } | ||||
|         sOkHttpClient = clientBuilder.build(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Add header that will be included for all the requests from now on | ||||
|      * @param headerName | ||||
|      * @param headerValue | ||||
|      */ | ||||
|     public static void addHeaderForAllRequests(String headerName, String headerValue) { | ||||
|         getOkHttpInterceptor() | ||||
|                 .addRequestInterceptor( | ||||
|                         new RequestHeaderInterceptor(headerName, headerValue) | ||||
|                 ); | ||||
|     } | ||||
| 
 | ||||
|     public static void deleteHeaderForAllRequests(String headerName) { | ||||
|         getOkHttpInterceptor().deleteRequestHeaderInterceptor(headerName); | ||||
|     } | ||||
| } | ||||
| @ -33,10 +33,10 @@ public class HttpConstants { | ||||
|      *************************************************** HEADERS *********************************************** | ||||
|      ***********************************************************************************************************/ | ||||
| 
 | ||||
|     /*********************************************************************************************************** | ||||
|      *************************************************** HEADERS *********************************************** | ||||
|      ***********************************************************************************************************/ | ||||
| 
 | ||||
|     public static final String BASIC_AUTHORIZATION_HEADER = "Authorization"; | ||||
|     public static final String COOKIE_HEADER = "Cookie"; | ||||
|     public static final String BEARER_AUTHORIZATION_HEADER = "Bearer "; | ||||
|     public static final String USER_AGENT_HEADER = "User-Agent"; | ||||
|     public static final String IF_MATCH_HEADER = "If-Match"; | ||||
|     public static final String IF_NONE_MATCH_HEADER = "If-None-Match"; | ||||
|     public static final String CONTENT_TYPE_HEADER = "Content-Type"; | ||||
|  | ||||
| @ -1,21 +0,0 @@ | ||||
| package com.owncloud.android.lib.common.http.interceptors; | ||||
| 
 | ||||
| import okhttp3.Request; | ||||
| 
 | ||||
| public class BarearAuthInterceptor implements HttpInterceptor.RequestInterceptor { | ||||
| 
 | ||||
|     private static final String AUTHORIZATION_HEADER = "Authorization"; | ||||
|     private final String mBarearToken; | ||||
| 
 | ||||
|     public BarearAuthInterceptor(String barearToken) { | ||||
|         this.mBarearToken = barearToken; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Request intercept(Request request) { | ||||
|         return request | ||||
|                 .newBuilder() | ||||
|                 .addHeader(AUTHORIZATION_HEADER, "Bearer " + mBarearToken) | ||||
|                 .build(); | ||||
|     } | ||||
| } | ||||
| @ -1,43 +0,0 @@ | ||||
| /* 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.interceptors; | ||||
| 
 | ||||
| import okhttp3.Credentials; | ||||
| import okhttp3.Request; | ||||
| 
 | ||||
| public class BasicAuthInterceptor implements HttpInterceptor.RequestInterceptor { | ||||
| 
 | ||||
|     private static final String AUTHORIZATION_HEADER = "Authorization"; | ||||
|     private String mCredentials; | ||||
| 
 | ||||
|     public BasicAuthInterceptor(String username, String password) { | ||||
|         mCredentials = Credentials.basic(username, password); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Request intercept(Request request) { | ||||
|         return request.newBuilder().addHeader(AUTHORIZATION_HEADER, mCredentials).build(); | ||||
|     } | ||||
| } | ||||
| @ -65,7 +65,7 @@ public class HttpInterceptor implements Interceptor { | ||||
|         Response intercept(Response response) throws IOException; | ||||
|     } | ||||
| 
 | ||||
|     public HttpInterceptor addRequestInterceptor (RequestInterceptor requestInterceptor) { | ||||
|     public HttpInterceptor addRequestInterceptor(RequestInterceptor requestInterceptor) { | ||||
|         mRequestInterceptors.add(requestInterceptor); | ||||
|         return this; | ||||
|     } | ||||
| @ -79,7 +79,28 @@ public class HttpInterceptor implements Interceptor { | ||||
|         return mRequestInterceptors; | ||||
|     } | ||||
| 
 | ||||
|     private ArrayList<RequestHeaderInterceptor> getRequestHeaderInterceptors() { | ||||
|         ArrayList<RequestHeaderInterceptor> requestHeaderInterceptors = new ArrayList<>(); | ||||
| 
 | ||||
|         for (RequestInterceptor requestInterceptor : mRequestInterceptors) { | ||||
|             if (requestInterceptor instanceof RequestHeaderInterceptor) { | ||||
|                 requestHeaderInterceptors.add((RequestHeaderInterceptor) requestInterceptor); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return requestHeaderInterceptors; | ||||
|     } | ||||
| 
 | ||||
|     public void deleteRequestHeaderInterceptor(String headerName) { | ||||
|         for (RequestInterceptor requestInterceptor : mRequestInterceptors) { | ||||
|             if (requestInterceptor instanceof RequestHeaderInterceptor && | ||||
|                     ((RequestHeaderInterceptor) requestInterceptor).getHeaderName().equals(headerName)) { | ||||
|                 mRequestInterceptors.remove(requestInterceptor); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public ArrayList<ResponseInterceptor> getResponseInterceptors() { | ||||
|         return mResponseInterceptors; | ||||
|     } | ||||
| } | ||||
| } | ||||
| @ -0,0 +1,27 @@ | ||||
| package com.owncloud.android.lib.common.http.interceptors; | ||||
| 
 | ||||
| import okhttp3.Request; | ||||
| 
 | ||||
| public class RequestHeaderInterceptor implements HttpInterceptor.RequestInterceptor { | ||||
| 
 | ||||
|     private String mHeaderName; | ||||
|     private String mHeaderValue; | ||||
| 
 | ||||
|     public RequestHeaderInterceptor(String headerName, String headerValue) { | ||||
|         this.mHeaderName = headerName; | ||||
|         this.mHeaderValue = headerValue; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Request intercept(Request request) { | ||||
|         return request.newBuilder().addHeader(mHeaderName, mHeaderValue).build(); | ||||
|     } | ||||
| 
 | ||||
|     public String getHeaderName() { | ||||
|         return mHeaderName; | ||||
|     } | ||||
| 
 | ||||
|     public String getHeaderValue() { | ||||
|         return mHeaderValue; | ||||
|     } | ||||
| } | ||||
| @ -1,21 +0,0 @@ | ||||
| package com.owncloud.android.lib.common.http.interceptors; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| import okhttp3.Request; | ||||
| 
 | ||||
| public class SamlAuthInterceptor implements HttpInterceptor.RequestInterceptor { | ||||
| 
 | ||||
|     private final String mSessionCookie; | ||||
| 
 | ||||
|     public SamlAuthInterceptor(String sessionCookie) { | ||||
|         this.mSessionCookie = sessionCookie; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Request intercept(Request request) throws IOException { | ||||
|         return request.newBuilder() | ||||
|                 .addHeader("Cookie", mSessionCookie) | ||||
|                 .build(); | ||||
|     } | ||||
| } | ||||
| @ -1,42 +0,0 @@ | ||||
| /* 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.interceptors; | ||||
| 
 | ||||
| import okhttp3.Request; | ||||
| 
 | ||||
| public class UserAgentInterceptor implements HttpInterceptor.RequestInterceptor { | ||||
| 
 | ||||
|     private static final String USER_AGENT_HEADER = "User-Agent"; | ||||
|     private String mUserAgent; | ||||
| 
 | ||||
|     public UserAgentInterceptor(String userAgent) { | ||||
|         mUserAgent = userAgent; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Request intercept(Request request) { | ||||
|         return request.newBuilder().addHeader(USER_AGENT_HEADER, mUserAgent).build(); | ||||
|     } | ||||
| } | ||||
| @ -60,8 +60,6 @@ public abstract class HttpBaseMethod { | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     public void abort() { | ||||
|         mCall.cancel(); | ||||
|     } | ||||
|  | ||||
| @ -24,6 +24,7 @@ | ||||
| 
 | ||||
| package com.owncloud.android.lib.common.http.methods.webdav; | ||||
| 
 | ||||
| import com.owncloud.android.lib.common.http.HttpClient; | ||||
| import com.owncloud.android.lib.common.http.methods.HttpBaseMethod; | ||||
| 
 | ||||
| import java.util.concurrent.TimeUnit; | ||||
|  | ||||
| @ -54,16 +54,13 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | ||||
|     private static final int LAST_CHUNK_TIMEOUT = 900000; //15 mins. | ||||
| 
 | ||||
|     public static final long CHUNK_SIZE = 1024000; | ||||
|     private static final String OC_CHUNKED_HEADER = "OC-Chunked"; | ||||
|     private static final String OC_CHUNK_SIZE_HEADER = "OC-Chunk-Size"; | ||||
|     private static final String OC_CHUNK_X_OC_MTIME_HEADER = "X-OC-Mtime"; | ||||
|     private static final String TAG = ChunkedUploadRemoteFileOperation.class.getSimpleName(); | ||||
| 
 | ||||
|     private long mTransferId; | ||||
| 
 | ||||
|     public ChunkedUploadRemoteFileOperation(long transferId, String storagePath, String remotePath, String mimeType, | ||||
|     public ChunkedUploadRemoteFileOperation(long transferId, String localPath, String remotePath, String mimeType, | ||||
|                                             String requiredEtag, String fileLastModifTimestamp) { | ||||
|         super(storagePath, remotePath, mimeType, requiredEtag, fileLastModifTimestamp); | ||||
|         super(localPath, remotePath, mimeType, requiredEtag, fileLastModifTimestamp); | ||||
|         mTransferId = transferId; | ||||
|     } | ||||
| 
 | ||||
| @ -92,14 +89,9 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | ||||
|             String uriPrefix = client.getNewUploadsWebDavUri() + FileUtils.PATH_SEPARATOR + String.valueOf(mTransferId); | ||||
|             long totalLength = fileToUpload.length(); | ||||
|             long chunkCount = (long) Math.ceil((double) totalLength / CHUNK_SIZE); | ||||
|             String chunkSizeStr = String.valueOf(CHUNK_SIZE); | ||||
|             String totalLengthStr = String.valueOf(fileToUpload.length()); | ||||
| 
 | ||||
|             for (int chunkIndex = 0; chunkIndex < chunkCount; chunkIndex++, offset += CHUNK_SIZE) { | ||||
|                 if (chunkIndex == chunkCount - 1) { | ||||
|                     chunkSizeStr = String.valueOf(CHUNK_SIZE * chunkCount - totalLength); | ||||
|                 } | ||||
| 
 | ||||
|                 mPutMethod = new PutMethod( | ||||
|                         HttpUtils.stringUrlToHttpUrl(uriPrefix + FileUtils.PATH_SEPARATOR + chunkIndex) | ||||
|                 ); | ||||
| @ -108,10 +100,6 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation | ||||
|                     mPutMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + mRequiredEtag + "\""); | ||||
|                 } | ||||
| 
 | ||||
|                 mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, totalLengthStr); | ||||
| 
 | ||||
| //                mPutMethod.addRequestHeader(OC_CHUNK_X_OC_MTIME_HEADER, mFileLastModifTimestamp); | ||||
| 
 | ||||
| //                ((ChunkFromFileChannelRequestEntity) mEntity).setOffset(offset); | ||||
| //                mPutMethod.setRequestEntity(mEntity); | ||||
| //                if (mCancellationRequested.get()) { | ||||
|  | ||||
| @ -34,7 +34,7 @@ public class FileUtils { | ||||
| 	private static final  String TAG = FileUtils.class.getSimpleName(); | ||||
| 
 | ||||
| 	public static final String PATH_SEPARATOR = "/"; | ||||
| 	public static final String FINAl_CHUNKS_FILE = ".file"; | ||||
| 	public static final String FINAL_CHUNKS_FILE = ".file"; | ||||
| 
 | ||||
| 	public static String getParentPath(String remotePath) { | ||||
| 		String parentPath = new File(remotePath).getParent(); | ||||
|  | ||||
| @ -9,8 +9,11 @@ public class MoveRemoteChunksFileOperation extends MoveRemoteFileOperation { | ||||
|      * @param targetRemotePath Remove path desired for the file/folder after moving it. | ||||
|      * @param overwrite | ||||
|      */ | ||||
|     public MoveRemoteChunksFileOperation(String srcRemotePath, String targetRemotePath, boolean overwrite) { | ||||
|     public MoveRemoteChunksFileOperation(String srcRemotePath, String targetRemotePath, boolean overwrite, | ||||
|                                          String fileLastModifTimestamp, long fileLength) { | ||||
|         super(srcRemotePath, targetRemotePath, overwrite); | ||||
|         isChunkedFile = true; | ||||
|         mFileLastModifTimestamp = fileLastModifTimestamp; | ||||
|         mFileLength = fileLength; | ||||
|     } | ||||
| } | ||||
| @ -40,7 +40,6 @@ import java.util.concurrent.TimeUnit; | ||||
| 
 | ||||
| import okhttp3.HttpUrl; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Remote operation moving a remote file or folder in the ownCloud server to a different folder | ||||
|  * in the same account. | ||||
| @ -59,21 +58,23 @@ public class MoveRemoteFileOperation extends RemoteOperation { | ||||
| 
 | ||||
|     private String mSrcRemotePath; | ||||
|     private String mTargetRemotePath; | ||||
| 
 | ||||
|     private boolean mOverwrite; | ||||
| 
 | ||||
|     protected boolean isChunkedFile; | ||||
|     protected String mFileLastModifTimestamp; | ||||
|     protected long mFileLength; | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * <p> | ||||
|      * | ||||
|      * TODO Paths should finish in "/" in the case of folders. ? | ||||
|      * | ||||
|      * @param srcRemotePath    Remote path of the file/folder to move. | ||||
|      * @param targetRemotePath Remove path desired for the file/folder after moving it. | ||||
|      * @param targetRemotePath Remote path desired for the file/folder after moving it. | ||||
|      */ | ||||
|     public MoveRemoteFileOperation( | ||||
|         String srcRemotePath, String targetRemotePath, boolean overwrite | ||||
|     ) { | ||||
|     public MoveRemoteFileOperation(String srcRemotePath, | ||||
|                                    String targetRemotePath, | ||||
|                                    boolean overwrite) { | ||||
| 
 | ||||
|         mSrcRemotePath = srcRemotePath; | ||||
|         mTargetRemotePath = targetRemotePath; | ||||
| @ -81,7 +82,6 @@ public class MoveRemoteFileOperation extends RemoteOperation { | ||||
|         isChunkedFile = false; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * Performs the rename operation. | ||||
|      * | ||||
| @ -121,6 +121,11 @@ public class MoveRemoteFileOperation extends RemoteOperation { | ||||
|                 client.getNewFilesWebDavUri() + WebdavUtils.encodePath(mTargetRemotePath), | ||||
|                     mOverwrite); | ||||
| 
 | ||||
|             if (isChunkedFile) { | ||||
|                 move.addRequestHeader(HttpConstants.OC_X_OC_MTIME_HEADER, mFileLastModifTimestamp); | ||||
|                 move.addRequestHeader(HttpConstants.OC_TOTAL_LENGTH_HEADER, String.valueOf(mFileLength)); | ||||
|             } | ||||
| 
 | ||||
|             move.setReadTimeout(MOVE_READ_TIMEOUT, TimeUnit.SECONDS); | ||||
|             move.setConnectionTimeout(MOVE_CONNECTION_TIMEOUT, TimeUnit.SECONDS); | ||||
| 
 | ||||
| @ -149,7 +154,6 @@ public class MoveRemoteFileOperation extends RemoteOperation { | ||||
|             result = new RemoteOperationResult(e); | ||||
|             Log.e(TAG, "Move " + mSrcRemotePath + " to " + mTargetRemotePath + ": " + | ||||
|                 result.getLogMessage(), e); | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         return result; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user