X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/91225458c1c52614b0254badd9b5e25ebe880f8e..43da474a54718e5cfcd8be06c0aaa5b81b80699e:/src/eu/alefzero/webdav/WebdavClient.java diff --git a/src/eu/alefzero/webdav/WebdavClient.java b/src/eu/alefzero/webdav/WebdavClient.java index 0a231c08..a1dbd098 100644 --- a/src/eu/alefzero/webdav/WebdavClient.java +++ b/src/eu/alefzero/webdav/WebdavClient.java @@ -21,6 +21,7 @@ import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.HashMap; import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.HttpClient; @@ -32,13 +33,20 @@ import org.apache.commons.httpclient.methods.PutMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.http.HttpStatus; +import org.apache.jackrabbit.webdav.client.methods.DavMethod; +import org.apache.jackrabbit.webdav.client.methods.DeleteMethod; import org.apache.jackrabbit.webdav.client.methods.MkColMethod; -import eu.alefzero.owncloud.authenticator.EasySSLSocketFactory; -import eu.alefzero.owncloud.files.interfaces.OnDatatransferProgressListener; - +import android.accounts.Account; +import android.accounts.AccountManager; +import android.content.Context; import android.net.Uri; import android.util.Log; +import eu.alefzero.owncloud.AccountUtils; +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; +import eu.alefzero.owncloud.authenticator.EasySSLSocketFactory; +import eu.alefzero.owncloud.files.interfaces.OnDatatransferProgressListener; +import eu.alefzero.owncloud.utils.OwnCloudVersion; public class WebdavClient extends HttpClient { private Uri mUri; @@ -46,11 +54,29 @@ public class WebdavClient extends HttpClient { final private static String TAG = "WebdavClient"; private static final String USER_AGENT = "Android-ownCloud"; private OnDatatransferProgressListener mDataTransferListener; - - public WebdavClient(Uri uri) { - mUri = uri; + private static HashMap clients = new HashMap(); + + /** + * Creates a WebdavClient setup for the current account + * @param account The client accout + * @param context The application context + * @return + */ + public WebdavClient (Account account, Context context){ + OwnCloudVersion ownCloudVersion = new OwnCloudVersion(AccountManager.get(context).getUserData(account, + AccountAuthenticator.KEY_OC_VERSION)); + String baseUrl = AccountManager.get(context).getUserData(account, AccountAuthenticator.KEY_OC_BASE_URL); + String webDavPath = AccountUtils.getWebdavPath(ownCloudVersion); + String username = account.name.substring(0, account.name.indexOf('@')); + String password = AccountManager.get(context).getPassword(account); + + mUri = Uri.parse(baseUrl + webDavPath); getParams().setParameter(HttpMethodParams.USER_AGENT, USER_AGENT); + setCredentials(username, password); + allowSelfsignedCertificates(); } + + public WebdavClient(){} public void setCredentials(String username, String password) { getParams().setAuthenticationPreemptive(true); @@ -114,6 +140,22 @@ public class WebdavClient extends HttpClient { } return true; } + + /** + * Deletes a remote file via webdav + * @param remoteFilePath + * @return + */ + public boolean deleteFile(String remoteFilePath){ + DavMethod delete = new DeleteMethod(mUri.toString() + remoteFilePath); + try { + executeMethod(delete); + } catch (Throwable e) { + Log.e(TAG, "Deleting failed with error: " + e.getMessage(), e); + return false; + } + return true; + } public void setDataTransferProgressListener(OnDatatransferProgressListener listener) { mDataTransferListener = listener; @@ -144,15 +186,24 @@ public class WebdavClient extends HttpClient { return result; } - public int tryToLogin() { - int r = 0; - HeadMethod head = new HeadMethod(mUri.toString()); + /** + * Tries to log in to the given WedDavURI, with the given credentials + * @param uri To test + * @param username Username to check + * @param password Password to verify + * @return A {@link HttpStatus}-Code of the result. SC_OK is good. + */ + public static int tryToLogin(Uri uri, String username, String password) { + int returnCode = 0; + WebdavClient client = new WebdavClient(); + client.setCredentials(username, password); + HeadMethod head = new HeadMethod(uri.toString()); try { - r = executeMethod(head); + returnCode = client.executeMethod(head); } catch (Exception e) { Log.e(TAG, "Error: " + e.getMessage()); } - return r; + return returnCode; } public boolean createDirectory(String path) {