X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/0aeb425885ceccb28b31c9822d52b90656bf9257..5f61cb15552eb2fda01716078a9191b88cebf764:/src/eu/alefzero/webdav/WebdavClient.java diff --git a/src/eu/alefzero/webdav/WebdavClient.java b/src/eu/alefzero/webdav/WebdavClient.java index 880995da..f7cc060e 100644 --- a/src/eu/alefzero/webdav/WebdavClient.java +++ b/src/eu/alefzero/webdav/WebdavClient.java @@ -15,14 +15,15 @@ * along with this program. If not, see . * */ -package eu.alefzero.webdav; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +package eu.alefzero.webdav; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import java.net.URLDecoder; - +import java.net.URLEncoder; + import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.UsernamePasswordCredentials; @@ -30,114 +31,138 @@ import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.HeadMethod; import org.apache.commons.httpclient.methods.PutMethod; +import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.params.HttpMethodParams; -import org.apache.commons.httpclient.protocol.Protocol; +import org.apache.commons.httpclient.protocol.Protocol; import org.apache.http.HttpStatus; import org.apache.jackrabbit.webdav.client.methods.MkColMethod; - -import eu.alefzero.owncloud.authenticator.EasySSLSocketFactory; - + +import eu.alefzero.owncloud.authenticator.EasySSLSocketFactory; + import android.net.Uri; -import android.util.Log; - -public class WebdavClient extends HttpClient { - private Uri mUri; - private Credentials mCredentials; - final private static String TAG = "WebdavClient"; - private static final String USER_AGENT = "Android-ownCloud"; - - public WebdavClient(Uri uri) { - mUri = uri; - getParams().setParameter(HttpMethodParams.USER_AGENT, USER_AGENT); - } - - public void setCredentials(String username, String password) { - getParams().setAuthenticationPreemptive(true); - getState().setCredentials(AuthScope.ANY, getCredentials(username, password)); - } - - private Credentials getCredentials(String username, String password) { - if (mCredentials == null) - mCredentials = new UsernamePasswordCredentials(username, password); - return mCredentials; - } - - public void allowUnsignedCertificates() { - // https - Protocol.registerProtocol("https", new Protocol("https", new EasySSLSocketFactory(), 443)); - } - - public boolean downloadFile(String filepath, File targetPath) { - //HttpGet get = new HttpGet(mUri.toString() + filepath.replace(" ", "%20")); - - Log.e("ASD", mUri.toString() + URLDecoder.decode(filepath) + ""); - GetMethod get = new GetMethod(mUri.toString() + URLDecoder.decode(filepath)); - -// get.setHeader("Host", mUri.getHost()); -// get.setHeader("User-Agent", "Android-ownCloud"); - - try { - int status = executeMethod(get); - if (status != HttpStatus.SC_OK) { - return false; - } - BufferedInputStream bis = new BufferedInputStream(get.getResponseBodyAsStream()); - FileOutputStream fos = new FileOutputStream(targetPath); - - byte[] bytes = new byte[512]; - int readResult; - while ((readResult = bis.read(bytes)) != -1) fos.write(bytes, 0, readResult); - - } catch (IOException e) { - e.printStackTrace(); - return false; - } - return true; - } - - public boolean putFile(String localFile, - String remoteTarget, - String contentType) { - boolean result = true; - - try { - FileRequestEntity entity = new FileRequestEntity(new File(localFile), contentType); - PutMethod put = new PutMethod(mUri.toString() + remoteTarget.substring(1)); - put.setRequestEntity(entity); - int status = executeMethod(put); - Log.d(TAG, "PUT method return with status "+status); - - Log.i(TAG, "Uploading, done"); - } catch (final Exception e) { - Log.i(TAG, ""+e.getMessage()); - result = false; - } - - return result; - } - - public int tryToLogin() { - int r = 0; - HeadMethod head = new HeadMethod(mUri.toString()); - try { - r = executeMethod(head); - } catch (Exception e) { - Log.e(TAG, "Error: " + e.getMessage()); +import android.util.Log; + +public class WebdavClient extends HttpClient { + private Uri mUri; + private Credentials mCredentials; + final private static String TAG = "WebdavClient"; + private static final String USER_AGENT = "Android-ownCloud"; + private OnUploadProgressListener mUploadProgressListener; + + public WebdavClient(Uri uri) { + mUri = uri; + getParams().setParameter(HttpMethodParams.USER_AGENT, USER_AGENT); + } + + public void setCredentials(String username, String password) { + getParams().setAuthenticationPreemptive(true); + getState().setCredentials(AuthScope.ANY, + getCredentials(username, password)); + } + + private Credentials getCredentials(String username, String password) { + if (mCredentials == null) + mCredentials = new UsernamePasswordCredentials(username, password); + return mCredentials; + } + + public void allowUnsignedCertificates() { + // https + Protocol.registerProtocol("https", new Protocol("https", + new EasySSLSocketFactory(), 443)); + } + + public boolean downloadFile(String filepath, File targetPath) { + // HttpGet get = new HttpGet(mUri.toString() + filepath.replace(" ", + // "%20")); + String[] splitted_filepath = filepath.split("/"); + filepath = ""; + for (String s : splitted_filepath) { + if (s.equals("")) continue; + filepath += "/" + URLEncoder.encode(s); + } + + Log.e("ASD", mUri.toString() + filepath.replace(" ", "%20") + ""); + GetMethod get = new GetMethod(mUri.toString() + + filepath.replace(" ", "%20")); + + // get.setHeader("Host", mUri.getHost()); + // get.setHeader("User-Agent", "Android-ownCloud"); + + try { + int status = executeMethod(get); + Log.e(TAG, "status return: " + status); + if (status != HttpStatus.SC_OK) { + return false; + } + BufferedInputStream bis = new BufferedInputStream( + get.getResponseBodyAsStream()); + FileOutputStream fos = new FileOutputStream(targetPath); + + byte[] bytes = new byte[512]; + int readResult; + while ((readResult = bis.read(bytes)) != -1) + fos.write(bytes, 0, readResult); + + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + public void setUploadListener(OnUploadProgressListener listener) { + mUploadProgressListener = listener; + } + + public boolean putFile(String localFile, String remoteTarget, + String contentType) { + boolean result = true; + + try { + Log.e("ASD", contentType + ""); + File f = new File(localFile); + FileRequestEntity entity = new FileRequestEntity(f, contentType); + entity.setOnUploadProgressListener(mUploadProgressListener); + Log.e("ASD", f.exists() + " " + entity.getContentLength()); + PutMethod put = new PutMethod(mUri.toString() + remoteTarget); + put.setRequestEntity(entity); + Log.d(TAG, "" + put.getURI().toString()); + int status = executeMethod(put); + Log.d(TAG, "PUT method return with status " + status); + + Log.i(TAG, "Uploading, done"); + } catch (final Exception e) { + Log.i(TAG, "" + e.getMessage()); + result = false; + } + + return result; + } + + public int tryToLogin() { + int r = 0; + HeadMethod head = new HeadMethod(mUri.toString()); + try { + r = executeMethod(head); + } catch (Exception e) { + Log.e(TAG, "Error: " + e.getMessage()); + } + return r; + } + + public boolean createDirectory(String path) { + try { + MkColMethod mkcol = new MkColMethod(mUri.toString() + "/" + path + + "/"); + int status = executeMethod(mkcol); + Log.d(TAG, "Status returned " + status); + Log.d(TAG, "uri: " + mkcol.getURI().toString()); + Log.i(TAG, "Creating dir completed"); + } catch (final Exception e) { + e.printStackTrace(); + return false; + } + return true; } - return r; - } - - public boolean createDirectory(String path) { - try { - MkColMethod mkcol = new MkColMethod(mUri.toString() + "/" + path + "/"); - int status = executeMethod(mkcol); - Log.d(TAG, "Status returned " + status); - Log.d(TAG, "uri: " + mkcol.getURI().toString()); - Log.i(TAG, "Creating dir completed"); - } catch (final Exception e) { - e.printStackTrace(); - return false; - } - return true; - } -} +}