fix crash when deleting used account
[pub/Android/ownCloud.git] / src / eu / alefzero / webdav / WebdavClient.java
index f03b7a9..880995d 100644 (file)
@@ -21,67 +21,37 @@ import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.URLDecoder;\r
 
 import org.apache.commons.httpclient.Credentials;\r
 import org.apache.commons.httpclient.HttpClient;\r
 import org.apache.commons.httpclient.UsernamePasswordCredentials;\r
 import org.apache.commons.httpclient.auth.AuthScope;\r
 
 import org.apache.commons.httpclient.Credentials;\r
 import org.apache.commons.httpclient.HttpClient;\r
 import org.apache.commons.httpclient.UsernamePasswordCredentials;\r
 import org.apache.commons.httpclient.auth.AuthScope;\r
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.params.ConnManagerPNames;
-import org.apache.http.conn.params.ConnPerRouteBean;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.entity.FileEntity;
-import org.apache.http.impl.auth.BasicScheme;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
-import org.apache.http.protocol.BasicHttpContext;
+import org.apache.commons.httpclient.methods.GetMethod;\r
+import org.apache.commons.httpclient.methods.HeadMethod;\r
+import org.apache.commons.httpclient.methods.PutMethod;\r
+import org.apache.commons.httpclient.params.HttpMethodParams;\r
+import org.apache.commons.httpclient.protocol.Protocol;
+import org.apache.http.HttpStatus;\r
+import org.apache.jackrabbit.webdav.client.methods.MkColMethod;\r
 
 import eu.alefzero.owncloud.authenticator.EasySSLSocketFactory;
 
 import eu.alefzero.owncloud.authenticator.EasySSLSocketFactory;
-import eu.alefzero.webdav.HttpMkCol;
 
 
-import android.net.Uri;
+import android.net.Uri;\r
 import android.util.Log;
 
 public class WebdavClient extends HttpClient {
 import android.util.Log;
 
 public class WebdavClient extends HttpClient {
-  private DefaultHttpClient mHttpClient;
-  private BasicHttpContext mHttpContext;
-  private HttpHost mTargetHost;
-  private SchemeRegistry mSchemeRegistry;
   private Uri mUri;\r
   private Credentials mCredentials;
   private Uri mUri;\r
   private Credentials mCredentials;
-  final private static String TAG = "WebdavClient";
-  
-  public DefaultHttpClient getHttpClient() {
-    return mHttpClient;
-  }
-  public HttpHost getTargetHost() {
-    return mTargetHost;
-  }
+  final private static String TAG = "WebdavClient";\r
+  private static final String USER_AGENT = "Android-ownCloud";
   
   public WebdavClient(Uri uri) {
   
   public WebdavClient(Uri uri) {
-    mUri = uri;
-    mSchemeRegistry = new SchemeRegistry();
-    setupHttpClient();
+    mUri = uri;\r
+    getParams().setParameter(HttpMethodParams.USER_AGENT, USER_AGENT);
   }
   
   }
   
-  public void setCredentials(String username, String password) {
-    // determine default port for http or https
-    int targetPort = mTargetHost.getPort() == -1 ? 
-                        ( mUri.getScheme().equals("https") ? 443 : 80)
-                        : mUri.getPort();\r
-\r
+  public void setCredentials(String username, String password) {\r
     getParams().setAuthenticationPreemptive(true);
     getState().setCredentials(AuthScope.ANY, getCredentials(username, password));
   }
     getParams().setAuthenticationPreemptive(true);
     getState().setCredentials(AuthScope.ANY, getCredentials(username, password));
   }
@@ -91,22 +61,27 @@ public class WebdavClient extends HttpClient {
       mCredentials = new UsernamePasswordCredentials(username, password); \r
     return mCredentials;\r
   }\r
       mCredentials = new UsernamePasswordCredentials(username, password); \r
     return mCredentials;\r
   }\r
+\r
   public void allowUnsignedCertificates() {
   public void allowUnsignedCertificates() {
-    // https
-    mSchemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
+    // https\r
+    Protocol.registerProtocol("https", new Protocol("https", new EasySSLSocketFactory(), 443));
   }
   
   public boolean downloadFile(String filepath, File targetPath) {
   }
   
   public boolean downloadFile(String filepath, File targetPath) {
-    HttpGet get = new HttpGet(mUri.toString() + filepath.replace(" ", "%20"));
-    get.setHeader("Host", mUri.getHost());
-    get.setHeader("User-Agent", "Android-ownCloud");
+    //HttpGet get = new HttpGet(mUri.toString() + filepath.replace(" ", "%20"));\r
+   \r
+    Log.e("ASD", mUri.toString() + URLDecoder.decode(filepath) + "");\r
+    GetMethod get = new GetMethod(mUri.toString() + URLDecoder.decode(filepath));\r
+    
+//    get.setHeader("Host", mUri.getHost());
+//    get.setHeader("User-Agent", "Android-ownCloud");
     
     try {
     
     try {
-      HttpResponse response = mHttpClient.execute(mTargetHost, get, mHttpContext);
-      if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+      int status = executeMethod(get);
+      if (status != HttpStatus.SC_OK) {
         return false;
       }
         return false;
       }
-      BufferedInputStream bis = new BufferedInputStream(response.getEntity().getContent());
+      BufferedInputStream bis = new BufferedInputStream(get.getResponseBodyAsStream());
       FileOutputStream fos = new FileOutputStream(targetPath);
       
       byte[] bytes = new byte[512];
       FileOutputStream fos = new FileOutputStream(targetPath);
       
       byte[] bytes = new byte[512];
@@ -124,29 +99,14 @@ public class WebdavClient extends HttpClient {
                   String remoteTarget,
                   String contentType) {
     boolean result = true;
                   String remoteTarget,
                   String contentType) {
     boolean result = true;
-    HttpPut method = new HttpPut(mUri.toString() + remoteTarget.replace(" ", "%20"));
-    method.setHeader("Content-type", contentType);
-    method.setHeader("Host", mUri.getHost());
-    method.setHeader("User-Agent", "Android-ownCloud");
 
     try {
 
     try {
-      final FileEntity fileEntity = new FileEntity(new File(localFile), contentType);
-
-      method.setEntity(fileEntity);
-      Log.i(TAG, "executing:" + method.getRequestLine().toString());
+      FileRequestEntity entity = new FileRequestEntity(new File(localFile), contentType);\r
+      PutMethod put = new PutMethod(mUri.toString() + remoteTarget.substring(1));\r
+      put.setRequestEntity(entity);\r
+      int status = executeMethod(put);\r
+      Log.d(TAG, "PUT method return with status "+status);
 
 
-      mHttpClient.execute(mTargetHost, method, mHttpContext);
-      /*mHandler.post(new Runnable() {
-      public void run() {
-        Uploader.this.PartialupdateUpload(c.getString(c.getColumnIndex(Media.DATA)),
-                                                  c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),
-                                                  mUploadPath + (mUploadPath.equals("/")?"":"/"),
-                                                  fileEntity.getContentType().getValue(),
-                                                  fileEntity.getContentLength()+"");
-      }
-    });
-    Log.i(TAG, "Uploading, done");
-*/
       Log.i(TAG, "Uploading, done");
     } catch (final Exception e) {
       Log.i(TAG, ""+e.getMessage());
       Log.i(TAG, "Uploading, done");
     } catch (final Exception e) {
       Log.i(TAG, ""+e.getMessage());
@@ -155,13 +115,24 @@ public class WebdavClient extends HttpClient {
     
     return result;
   }
     
     return result;
   }
-  
+  \r
+  public int tryToLogin() {\r
+    int r = 0; \r
+    HeadMethod head = new HeadMethod(mUri.toString());\r
+    try {\r
+      r = executeMethod(head);\r
+    } catch (Exception e) {\r
+      Log.e(TAG, "Error: " + e.getMessage());\r
+    }\r
+    return r;\r
+  }\r
+
   public boolean createDirectory(String path) {
   public boolean createDirectory(String path) {
-    HttpMkCol method = new HttpMkCol(mUri.toString() + path + "/");
-    method.setHeader("User-Agent", "Android-ownCloud");
-    
-    try {
-      mHttpClient.execute(mTargetHost, method, mHttpContext);
+    try {\r
+      MkColMethod mkcol = new MkColMethod(mUri.toString() + "/" + path + "/");
+      int status = executeMethod(mkcol);\r
+      Log.d(TAG, "Status returned " + status);\r
+      Log.d(TAG, "uri: " + mkcol.getURI().toString());
       Log.i(TAG, "Creating dir completed");
     } catch (final Exception e) {
       e.printStackTrace();
       Log.i(TAG, "Creating dir completed");
     } catch (final Exception e) {
       e.printStackTrace();
@@ -169,27 +140,4 @@ public class WebdavClient extends HttpClient {
     }
     return true;
   }
     }
     return true;
   }
-  
-  private void setupHttpClient() {
-    // http scheme
-    mSchemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
-    mSchemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
-    
-    HttpParams params = new BasicHttpParams();
-    params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
-    params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30));
-    params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
-    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
-
-    mHttpContext = new BasicHttpContext();
-    ClientConnectionManager cm = new ThreadSafeClientConnManager(params, mSchemeRegistry);
-
-    int port = mUri.getPort() == -1 ? 
-                 mUri.getScheme().equals("https") ? 443 : 80
-               : mUri.getPort();
-    
-    mTargetHost = new HttpHost(mUri.getHost(), port, mUri.getScheme());
-    
-    mHttpClient = new DefaultHttpClient(cm, params);
-  }
 }
 }