X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/435b31ba4f3597cc7a43270cd4a54fb0180956c1..52bd01bcedf1b8f13c49b67ee40a848bae1a9d40:/src/eu/alefzero/webdav/WebdavEntry.java diff --git a/src/eu/alefzero/webdav/WebdavEntry.java b/src/eu/alefzero/webdav/WebdavEntry.java index e7222772..46923c66 100644 --- a/src/eu/alefzero/webdav/WebdavEntry.java +++ b/src/eu/alefzero/webdav/WebdavEntry.java @@ -2,9 +2,8 @@ * Copyright (C) 2012 ownCloud * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -24,18 +23,20 @@ import org.apache.jackrabbit.webdav.property.DavProperty; import org.apache.jackrabbit.webdav.property.DavPropertyName; import org.apache.jackrabbit.webdav.property.DavPropertySet; -import android.util.Log; +import com.owncloud.android.Log_OC; + +import android.net.Uri; public class WebdavEntry { private String mName, mPath, mUri, mContentType; private long mContentLength, mCreateTimestamp, mModifiedTimestamp; - public WebdavEntry(MultiStatusResponse ms) { + public WebdavEntry(MultiStatusResponse ms, String splitElement) { resetData(); if (ms.getStatus().length != 0) { mUri = ms.getHref(); - mPath = mUri.split("webdav.php", 2)[1]; + mPath = mUri.split(splitElement, 2)[1]; int status = ms.getStatus()[0].getStatusCode(); DavPropertySet propSet = ms.getProperties(status); @@ -49,16 +50,24 @@ public class WebdavEntry { mName = tmp[tmp.length - 1]; } + // use unknown mimetype as default behavior + mContentType = "application/octet-stream"; prop = propSet.get(DavPropertyName.GETCONTENTTYPE); if (prop != null) { mContentType = (String) prop.getValue(); - } else { - mContentType = "DIR"; - /* - * prop = propSet.get(DavPropertyName.ISCOLLECTION); if (prop != - * null && Boolean.parseBoolean((String) prop.getValue())) - * mContentType = "DIR"; - */ + // dvelasco: some builds of ownCloud server 4.0.x added a trailing ';' to the MIME type ; if looks fixed, but let's be cautious + if (mContentType.indexOf(";") >= 0) { + mContentType = mContentType.substring(0, mContentType.indexOf(";")); + } + } + + // check if it's a folder in the standard way: see RFC2518 12.2 . RFC4918 14.3 + prop = propSet.get(DavPropertyName.RESOURCETYPE); + if (prop!= null) { + Object value = prop.getValue(); + if (value != null) { + mContentType = "DIR"; // a specific attribute would be better, but this is enough; unless while we have no reason to distinguish MIME types for folders + } } prop = propSet.get(DavPropertyName.GETCONTENTLENGTH); @@ -80,7 +89,7 @@ public class WebdavEntry { } } else { - Log.e("WebdavEntry", + Log_OC.e("WebdavEntry", "General fuckup, no status for webdav response"); } } @@ -88,6 +97,10 @@ public class WebdavEntry { public String path() { return mPath; } + + public String decodedPath() { + return Uri.decode(mPath); + } public String name() { return mName; @@ -113,7 +126,7 @@ public class WebdavEntry { return mCreateTimestamp; } - public long modifiedTimesamp() { + public long modifiedTimestamp() { return mModifiedTimestamp; }