From 1249e205d671db5e8bc5d5fb7cfda1110b1f561a Mon Sep 17 00:00:00 2001 From: DerSchabi Date: Fri, 18 May 2018 12:21:47 +0200 Subject: [PATCH] add OCAccount add OCAccount --- .../android/lib/refactor/OCContext.java | 31 +--- .../android/lib/refactor/RemoteOperation.java | 16 +- .../lib/refactor/RemoteOperationResult.java | 10 +- .../{utils => account}/AccountTypeUtils.java | 2 +- .../{utils => account}/AccountUtils.java | 175 ++++++++---------- .../lib/refactor/account/OCAccount.java | 155 ++++++++++++++++ .../OAuth2GetAccessTokenOperation.java | 13 +- .../OAuth2RefreshAccessTokenOperation.java | 11 +- .../exceptions/AccountNotFoundException.java | 23 +++ .../operations/PropfindOperation.java | 1 + 10 files changed, 289 insertions(+), 148 deletions(-) rename src/com/owncloud/android/lib/refactor/{utils => account}/AccountTypeUtils.java (97%) rename src/com/owncloud/android/lib/refactor/{utils => account}/AccountUtils.java (61%) create mode 100644 src/com/owncloud/android/lib/refactor/account/OCAccount.java create mode 100644 src/com/owncloud/android/lib/refactor/exceptions/AccountNotFoundException.java diff --git a/src/com/owncloud/android/lib/refactor/OCContext.java b/src/com/owncloud/android/lib/refactor/OCContext.java index 9602f588..d8d0054c 100644 --- a/src/com/owncloud/android/lib/refactor/OCContext.java +++ b/src/com/owncloud/android/lib/refactor/OCContext.java @@ -2,6 +2,7 @@ package com.owncloud.android.lib.refactor; import android.net.Uri; +import com.owncloud.android.lib.refactor.account.OCAccount; import com.owncloud.android.lib.refactor.authentication.OCCredentials; @@ -18,33 +19,13 @@ public class OCContext { private static final boolean PARAM_SINGLE_COOKIE_HEADER_VALUE = true; private static final String PARAM_PROTOCOL_VERSION = "http.protocol.version"; - private OCCredentials mCredentials = null; - private Uri mBaseUri; + private OCAccount mOCAccount; - public class Builder { - OCContext ocContext = new OCContext(); - - public Builder setCredentials(OCCredentials credentials) { - ocContext.mCredentials = credentials; - return this; - } - - public Builder setBaseUri(Uri baseUri) { - ocContext.mBaseUri = baseUri; - return this; - } - - public OCContext build() { - return ocContext; - } + public OCContext(OCAccount account) { + mOCAccount = account; } - - public OCCredentials getCredentials() { - return mCredentials; - } - - public Uri getBaseUri() { - return mBaseUri; + public OCAccount getOCAccount() { + return mOCAccount; } } diff --git a/src/com/owncloud/android/lib/refactor/RemoteOperation.java b/src/com/owncloud/android/lib/refactor/RemoteOperation.java index 50c23a06..4dff64e3 100644 --- a/src/com/owncloud/android/lib/refactor/RemoteOperation.java +++ b/src/com/owncloud/android/lib/refactor/RemoteOperation.java @@ -1,5 +1,7 @@ package com.owncloud.android.lib.refactor; +import android.net.Uri; + import java.util.Map; import okhttp3.OkHttpClient; @@ -29,16 +31,26 @@ public abstract class RemoteOperation { return httpClient; } + public Uri.Builder getBaseUriBuilder() { + return mContext.getOCAccount().getBaseUri().buildUpon(); + } + public Request.Builder getRequestBuilder() { Request.Builder builder = new Request.Builder(); for(Map.Entry header - : mContext.getCredentials().getCredentialHeaders().entrySet()) { + : mContext.getOCAccount() + .getCredentials() + .getCredentialHeaders() + .entrySet()) { builder.addHeader(header.getKey(), header.getValue()); } //TODO: Remove this part once SAML is obsolet - final String credentialCookie = mContext.getCredentials().getCredentialCookie(); + final String credentialCookie = mContext + .getOCAccount() + .getCredentials() + .getCredentialCookie(); if(credentialCookie == null) { builder.addHeader("Cookie", credentialCookie); } diff --git a/src/com/owncloud/android/lib/refactor/RemoteOperationResult.java b/src/com/owncloud/android/lib/refactor/RemoteOperationResult.java index 6f09bcba..eb89e0a3 100644 --- a/src/com/owncloud/android/lib/refactor/RemoteOperationResult.java +++ b/src/com/owncloud/android/lib/refactor/RemoteOperationResult.java @@ -27,7 +27,7 @@ package com.owncloud.android.lib.refactor; import android.accounts.Account; import android.accounts.AccountsException; -import com.owncloud.android.lib.refactor.utils.AccountUtils; +import com.owncloud.android.lib.refactor.exceptions.AccountNotFoundException; import com.owncloud.android.lib.refactor.exceptions.CertificateCombinedException; import com.owncloud.android.lib.refactor.exceptions.OperationCancelledException; import com.owncloud.android.lib.refactor.utils.ErrorMessageParser; @@ -71,7 +71,7 @@ public class RemoteOperationResult implements Serializable { /** * Generated - should be refreshed every time the class changes!! */ - private static final long serialVersionUID = 4968939884332372230L; + private static final long serialVersionUID = 4968939884332652230L; private static final String TAG = RemoteOperationResult.class.getSimpleName(); @@ -184,7 +184,7 @@ public class RemoteOperationResult implements Serializable { } else if (e instanceof UnknownHostException) { mCode = ResultCode.HOST_NOT_AVAILABLE; - } else if (e instanceof AccountUtils.AccountNotFoundException) { + } else if (e instanceof AccountNotFoundException) { mCode = ResultCode.ACCOUNT_NOT_FOUND; } else if (e instanceof AccountsException) { @@ -444,9 +444,9 @@ public class RemoteOperationResult implements Serializable { if(mException instanceof DavException) return "Unexpected WebDAV exception"; if(mException instanceof HttpException) return "HTTP violation"; if(mException instanceof IOException) return "Unrecovered transport exception"; - if(mException instanceof AccountUtils.AccountNotFoundException) { + if(mException instanceof AccountNotFoundException) { Account failedAccount = - ((AccountUtils.AccountNotFoundException) mException).getFailedAccount(); + ((AccountNotFoundException) mException).getFailedAccount(); return mException.getMessage() + " (" + (failedAccount != null ? failedAccount.name : "NULL") + ")"; diff --git a/src/com/owncloud/android/lib/refactor/utils/AccountTypeUtils.java b/src/com/owncloud/android/lib/refactor/account/AccountTypeUtils.java similarity index 97% rename from src/com/owncloud/android/lib/refactor/utils/AccountTypeUtils.java rename to src/com/owncloud/android/lib/refactor/account/AccountTypeUtils.java index 92ab5662..009194e0 100644 --- a/src/com/owncloud/android/lib/refactor/utils/AccountTypeUtils.java +++ b/src/com/owncloud/android/lib/refactor/account/AccountTypeUtils.java @@ -22,7 +22,7 @@ * */ -package com.owncloud.android.lib.refactor.utils; +package com.owncloud.android.lib.refactor.account; /** * @author masensio diff --git a/src/com/owncloud/android/lib/refactor/utils/AccountUtils.java b/src/com/owncloud/android/lib/refactor/account/AccountUtils.java similarity index 61% rename from src/com/owncloud/android/lib/refactor/utils/AccountUtils.java rename to src/com/owncloud/android/lib/refactor/account/AccountUtils.java index e5d54fe1..833a9bd9 100644 --- a/src/com/owncloud/android/lib/refactor/utils/AccountUtils.java +++ b/src/com/owncloud/android/lib/refactor/account/AccountUtils.java @@ -23,7 +23,7 @@ * */ -package com.owncloud.android.lib.refactor.utils; +package com.owncloud.android.lib.refactor.account; import android.accounts.Account; import android.accounts.AccountManager; @@ -33,16 +33,23 @@ import android.accounts.OperationCanceledException; import android.content.Context; import android.net.Uri; -import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.accounts.AccountTypeUtils; -import com.owncloud.android.lib.common.authentication.OwnCloudCredentials; import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory; -import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.lib.refactor.Log_OC; +import com.owncloud.android.lib.refactor.OCContext; +import com.owncloud.android.lib.refactor.authentication.OCCredentials; +import com.owncloud.android.lib.refactor.authentication.credentials.OCBasicCredentials; +import com.owncloud.android.lib.refactor.authentication.credentials.OCBearerCredentials; +import com.owncloud.android.lib.refactor.authentication.credentials.OCSamlSsoCredentials; +import com.owncloud.android.lib.refactor.exceptions.AccountNotFoundException; import com.owncloud.android.lib.resources.status.OwnCloudVersion; -import org.apache.commons.httpclient.Cookie; +import org.apache.commons.httpclient.auth.AuthenticationException; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import okhttp3.Cookie; public class AccountUtils { @@ -59,7 +66,7 @@ public class AccountUtils { public static String getWebDavUrlForAccount(Context context, Account account) throws AccountNotFoundException { - return getBaseUrlForAccount(context, account) + OwnCloudClient.WEBDAV_PATH_4_0; + return getBaseUrlForAccount(context, account) + OCContext.WEBDAV_PATH_4_0; } @@ -121,73 +128,65 @@ public class AccountUtils { } /** - * @return + * @return OCCredentials * @throws IOException * @throws AuthenticatorException * @throws OperationCanceledException */ - public static OwnCloudCredentials getCredentialsForAccount(Context context, Account account) + + /** + * + * @param context an Android context + * @param account the coresponding Android account + * @return + * @throws OperationCanceledException + * @throws AuthenticatorException + * @throws IOException + */ + public static OCCredentials getCredentialsForAccount(Context context, Account account) throws OperationCanceledException, AuthenticatorException, IOException { - OwnCloudCredentials credentials = null; - AccountManager am = AccountManager.get(context); - - String supportsOAuth2 = am.getUserData(account, AccountUtils.Constants.KEY_SUPPORTS_OAUTH2); - boolean isOauth2 = supportsOAuth2 != null && supportsOAuth2.equals("TRUE"); - + final AccountManager am = AccountManager.get(context); + final String supportsOAuth2 = am.getUserData(account, AccountUtils.Constants.KEY_SUPPORTS_OAUTH2); + final boolean isOauth2 = supportsOAuth2 != null && supportsOAuth2.equals("TRUE"); String supportsSamlSSo = am.getUserData(account, AccountUtils.Constants.KEY_SUPPORTS_SAML_WEB_SSO); - - boolean isSamlSso = supportsSamlSSo != null && supportsSamlSSo.equals("TRUE"); - - String username = AccountUtils.getUsernameForAccount(account); - OwnCloudVersion version = new OwnCloudVersion(am.getUserData(account, Constants.KEY_OC_VERSION)); + final boolean isSamlSso = supportsSamlSSo != null && supportsSamlSSo.equals("TRUE"); + final String username = AccountUtils.getUsernameForAccount(account); if (isOauth2) { - String accessToken = am.blockingGetAuthToken( + final String accessToken = am.blockingGetAuthToken( account, AccountTypeUtils.getAuthTokenTypeAccessToken(account.type), false); - credentials = OwnCloudCredentialsFactory.newBearerCredentials(username, accessToken); + return new OCBearerCredentials(username, accessToken); } else if (isSamlSso) { - String accessToken = am.blockingGetAuthToken( - account, - AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(account.type), - false); - credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials(username, accessToken); + try { + final String accessToken = am.blockingGetAuthToken( + account, + AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(account.type), + false); + + return new OCSamlSsoCredentials(username, accessToken, + Uri.parse(getBaseUrlForAccount(context, account))); + } catch (AccountNotFoundException e) { + throw new AuthenticationException("Account not found", e); + } } else { - String password = am.blockingGetAuthToken( + final String password = am.blockingGetAuthToken( account, AccountTypeUtils.getAuthTokenTypePass(account.type), false); - credentials = OwnCloudCredentialsFactory.newBasicCredentials( - username, - password, - version.isPreemptiveAuthenticationPreferred() - ); + return new OCBasicCredentials(username, password); } - - return credentials; - } - public static String buildAccountNameOld(Uri serverBaseUrl, String username) { - if (serverBaseUrl.getScheme() == null) { - serverBaseUrl = Uri.parse("https://" + serverBaseUrl.toString()); - } - String accountName = username + "@" + serverBaseUrl.getHost(); - if (serverBaseUrl.getPort() >= 0) { - accountName += ":" + serverBaseUrl.getPort(); - } - return accountName; - } - public static String buildAccountName(Uri serverBaseUrl, String username) { if (serverBaseUrl.getScheme() == null) { serverBaseUrl = Uri.parse("https://" + serverBaseUrl.toString()); @@ -203,80 +202,60 @@ public class AccountUtils { return accountName; } - public static void saveClient(OwnCloudClient client, Account savedAccount, Context context) { + public static void saveCookies(List cookies, Account savedAccount, Context context) { // Account Manager AccountManager ac = AccountManager.get(context.getApplicationContext()); - if (client != null) { - String cookiesString = client.getCookiesString(); - if (!"".equals(cookiesString)) { - ac.setUserData(savedAccount, Constants.KEY_COOKIES, cookiesString); - // Log_OC.d(TAG, "Saving Cookies: "+ cookiesString ); + if (cookies != null && cookies.size() != 0) { + StringBuilder cookiesString = new StringBuilder(); + for (Cookie cookie : cookies) { + cookiesString.append(cookiesString + cookie.toString() + ";"); } + + ac.setUserData(savedAccount, Constants.KEY_COOKIES, cookiesString.toString()); } } /** - * Restore the client cookies persisted in an account stored in the system AccountManager. + * Restore the client cookies persisted in an account stored in the system AccountManager. * - * @param account Stored account. - * @param client Client to restore cookies in. - * @param context Android context used to access the system AccountManager. + * @param account + * @param context + * @return + * @throws AccountsException */ - public static void restoreCookies(Account account, OwnCloudClient client, Context context) { + public static List getCookiesFromAccount(Account account, Context context) throws AccountsException { if (account == null) { Log_OC.d(TAG, "Cannot restore cookie for null account"); + return new ArrayList<>(); + } - } else { - Log_OC.d(TAG, "Restoring cookies for " + account.name); + Log_OC.d(TAG, "Restoring cookies for " + account.name); - // Account Manager - AccountManager am = AccountManager.get(context.getApplicationContext()); + final AccountManager am = AccountManager.get(context.getApplicationContext()); + final Uri serverUri = Uri.parse(getBaseUrlForAccount(context, account)); + final String cookiesString = am.getUserData(account, Constants.KEY_COOKIES); + final List cookies = new ArrayList<>(); - Uri serverUri = (client.getBaseUri() != null) ? client.getBaseUri() : client.getWebdavUri(); + if (cookiesString != null) { + String[] rawCookies = cookiesString.split(";"); + for (String rawCookie : rawCookies) { + final int equalPos = rawCookie.indexOf('='); - String cookiesString = am.getUserData(account, Constants.KEY_COOKIES); - if (cookiesString != null) { - String[] cookies = cookiesString.split(";"); - if (cookies.length > 0) { - for (int i = 0; i < cookies.length; i++) { - Cookie cookie = new Cookie(); - int equalPos = cookies[i].indexOf('='); - cookie.setName(cookies[i].substring(0, equalPos)); - cookie.setValue(cookies[i].substring(equalPos + 1)); - cookie.setDomain(serverUri.getHost()); // VERY IMPORTANT - cookie.setPath(serverUri.getPath()); // VERY IMPORTANT - - client.getState().addCookie(cookie); - } - } + cookies.add(new Cookie.Builder() + .name(rawCookie.substring(0, equalPos)) + .value(rawCookie.substring(equalPos + 1)) + .domain(serverUri.getHost()) + .path(serverUri.getPath()) + .build()); } } + return cookies; } - public static class AccountNotFoundException extends AccountsException { - - /** - * Generated - should be refreshed every time the class changes!! - */ - private static final long serialVersionUID = -1684392454798508693L; - - private Account mFailedAccount; - - public AccountNotFoundException(Account failedAccount, String message, Throwable cause) { - super(message, cause); - mFailedAccount = failedAccount; - } - - public Account getFailedAccount() { - return mFailedAccount; - } - } - - public static class Constants { /** * Version should be 3 numbers separated by dot so it can be parsed by diff --git a/src/com/owncloud/android/lib/refactor/account/OCAccount.java b/src/com/owncloud/android/lib/refactor/account/OCAccount.java new file mode 100644 index 00000000..4349547d --- /dev/null +++ b/src/com/owncloud/android/lib/refactor/account/OCAccount.java @@ -0,0 +1,155 @@ +/* ownCloud Android Library is available under MIT license + * Copyright (C) 2016 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.refactor.account; + + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.accounts.AuthenticatorException; +import android.accounts.OperationCanceledException; +import android.content.Context; +import android.net.Uri; + +import com.owncloud.android.lib.refactor.authentication.OCCredentials; +import com.owncloud.android.lib.refactor.authentication.credentials.OCAnonymousCredentials; +import com.owncloud.android.lib.refactor.exceptions.AccountNotFoundException; + +import java.io.IOException; + +/** + * OwnCloud Account + * + * @author David A. Velasco + */ +public class OCAccount { + + private Uri mBaseUri; + private OCCredentials mCredentials; + private String mDisplayName; + private String mSavedAccountName; + private Account mSavedAccount; + + + /** + * Constructor for already saved OC accounts. + * + * Do not use for anonymous credentials. + */ + public OCAccount(Account savedAccount, Context context) throws AccountNotFoundException { + if (savedAccount == null) { + throw new IllegalArgumentException("Parameter 'savedAccount' cannot be null"); + } + + if (context == null) { + throw new IllegalArgumentException("Parameter 'context' cannot be null"); + } + + mSavedAccount = savedAccount; + mSavedAccountName = savedAccount.name; + mCredentials = null; // load of credentials is delayed + + AccountManager ama = AccountManager.get(context.getApplicationContext()); + String baseUrl = ama.getUserData(mSavedAccount, AccountUtils.Constants.KEY_OC_BASE_URL); + if (baseUrl == null ) { + throw new AccountNotFoundException(mSavedAccount, "Account not found", null); + } + mBaseUri = Uri.parse(AccountUtils.getBaseUrlForAccount(context, mSavedAccount)); + mDisplayName = ama.getUserData(mSavedAccount, AccountUtils.Constants.KEY_DISPLAY_NAME); + } + + + /** + * Constructor for non yet saved OC accounts. + * + * @param baseUri URI to the OC server to get access to. + * @param credentials Credentials to authenticate in the server. NULL is valid for anonymous credentials. + */ + public OCAccount(Uri baseUri, OCCredentials credentials) { + if (baseUri == null) { + throw new IllegalArgumentException("Parameter 'baseUri' cannot be null"); + } + mSavedAccount = null; + mSavedAccountName = null; + mBaseUri = baseUri; + mCredentials = credentials != null + ? credentials + : new OCAnonymousCredentials(); + String username = mCredentials.getUsername(); + if (username != null) { + mSavedAccountName = AccountUtils.buildAccountName(mBaseUri, username); + } + } + + /** + * Method for deferred load of account attributes from AccountManager + * + * @param context + * @throws AccountNotFoundException + * @throws AuthenticatorException + * @throws IOException + * @throws OperationCanceledException + */ + public void loadCredentials(Context context) + throws AccountNotFoundException, AuthenticatorException, + IOException, OperationCanceledException { + + if (context == null) { + throw new IllegalArgumentException("Parameter 'context' cannot be null"); + } + + if (mSavedAccount != null) { + mCredentials = AccountUtils.getCredentialsForAccount(context, mSavedAccount); + } + } + + public Uri getBaseUri() { + return mBaseUri; + } + + public OCCredentials getCredentials() { + return mCredentials; + } + + public String getName() { + return mSavedAccountName; + } + + public Account getSavedAccount() { + return mSavedAccount; + } + + public String getDisplayName() { + if (mDisplayName != null && mDisplayName.length() > 0) { + return mDisplayName; + } else if (mCredentials != null) { + return mCredentials.getUsername(); + } else if (mSavedAccount != null) { + return AccountUtils.getUsernameForAccount(mSavedAccount); + } else { + return null; + } + } + +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2GetAccessTokenOperation.java b/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2GetAccessTokenOperation.java index 0256e232..8a30f7db 100644 --- a/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2GetAccessTokenOperation.java +++ b/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2GetAccessTokenOperation.java @@ -84,13 +84,6 @@ public class OAuth2GetAccessTokenOperation extends RemoteOperation { @Override public RemoteOperationResult exec() { try { - - final Uri uri = getOCContext() - .getBaseUri() - .buildUpon() - .appendEncodedPath(mAccessTokenEndpointPath) - .build(); - final RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart(OAuth2Constants.KEY_GRANT_TYPE, mGrantType) @@ -100,7 +93,10 @@ public class OAuth2GetAccessTokenOperation extends RemoteOperation { .build(); final Request request = getRequestBuilder() - .url(uri.toString()) + .url(getBaseUriBuilder() + .appendEncodedPath(mAccessTokenEndpointPath) + .build() + .toString()) .method("POST", requestBody) .build(); @@ -109,6 +105,7 @@ public class OAuth2GetAccessTokenOperation extends RemoteOperation { .execute(); final String responseData = response.body().string(); + if (responseData != null && responseData.length() > 0) { JSONObject tokenJson = new JSONObject(responseData); Map accessTokenResult = diff --git a/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2RefreshAccessTokenOperation.java b/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2RefreshAccessTokenOperation.java index 18a6fa78..780ec71d 100644 --- a/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2RefreshAccessTokenOperation.java +++ b/src/com/owncloud/android/lib/refactor/authentication/oauth/operations/OAuth2RefreshAccessTokenOperation.java @@ -79,8 +79,6 @@ public class OAuth2RefreshAccessTokenOperation extends RemoteOperation { @Override public RemoteOperationResult exec() { try { - - final RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart(OAuth2Constants.KEY_GRANT_TYPE, @@ -90,20 +88,15 @@ public class OAuth2RefreshAccessTokenOperation extends RemoteOperation { .build(); final Request request = getRequestBuilder() - .url(getOCContext().getBaseUri().buildUpon() + .url(getBaseUriBuilder() .appendEncodedPath(mAccessTokenEndpointPath) .build() .toString()) .method("POST", requestBody) .build(); - - OCCredentials oauthCredentials = new OCBasicCredentials( - mClientId, - mClientSecret - ); - final Response response = getClient().newCall(request).execute(); + final String responseData = response.body().string(); Log_OC.d(TAG, "OAUTH2: raw response from POST TOKEN: " + responseData); diff --git a/src/com/owncloud/android/lib/refactor/exceptions/AccountNotFoundException.java b/src/com/owncloud/android/lib/refactor/exceptions/AccountNotFoundException.java new file mode 100644 index 00000000..fd1bfd6c --- /dev/null +++ b/src/com/owncloud/android/lib/refactor/exceptions/AccountNotFoundException.java @@ -0,0 +1,23 @@ +package com.owncloud.android.lib.refactor.exceptions; + +import android.accounts.Account; +import android.accounts.AccountsException; + +public class AccountNotFoundException extends AccountsException { + + /** + * Generated - should be refreshed every time the class changes!! + */ + private static final long serialVersionUID = -1684392454778508693L; + + private Account mFailedAccount; + + public AccountNotFoundException(Account failedAccount, String message, Throwable cause) { + super(message, cause); + mFailedAccount = failedAccount; + } + + public Account getFailedAccount() { + return mFailedAccount; + } +} \ No newline at end of file diff --git a/src/com/owncloud/android/lib/refactor/operations/PropfindOperation.java b/src/com/owncloud/android/lib/refactor/operations/PropfindOperation.java index b43d4c52..5a48b76b 100644 --- a/src/com/owncloud/android/lib/refactor/operations/PropfindOperation.java +++ b/src/com/owncloud/android/lib/refactor/operations/PropfindOperation.java @@ -13,6 +13,7 @@ public class PropfindOperation extends RemoteOperation { @Override public RemoteOperationResult exec() { + return null; } }