1 /* ownCloud Android client application 
   2  *   Copyright (C) 2012  Bartek Przybylski 
   4  *   This program is free software: you can redistribute it and/or modify 
   5  *   it under the terms of the GNU General Public License as published by 
   6  *   the Free Software Foundation, either version 3 of the License, or 
   7  *   (at your option) any later version. 
   9  *   This program is distributed in the hope that it will be useful, 
  10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of 
  11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  12  *   GNU General Public License for more details. 
  14  *   You should have received a copy of the GNU General Public License 
  15  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  19 package eu
.alefzero
.webdav
; 
  21 import java
.text
.ParseException
; 
  22 import java
.text
.SimpleDateFormat
; 
  23 import java
.util
.Date
; 
  24 import java
.util
.Locale
; 
  26 import eu
.alefzero
.owncloud
.datamodel
.OCFile
; 
  28 import android
.net
.Uri
; 
  30 public class WebdavUtils 
{ 
  31     public static final SimpleDateFormat DISPLAY_DATE_FORMAT 
= new SimpleDateFormat( 
  33     private static final SimpleDateFormat DATETIME_FORMATS
[] = { 
  34             new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale
.US
), 
  35             new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale
.US
), 
  36             new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", Locale
.US
), 
  37             new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale
.US
), 
  38             new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale
.US
), 
  39             new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale
.US
), 
  40             new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale
.US
) }; 
  42     public static String 
prepareXmlForPropFind() { 
  43         String ret 
= "<?xml version=\"1.0\" ?><D:propfind xmlns:D=\"DAV:\"><D:allprop/></D:propfind>"; 
  47     public static String 
prepareXmlForPatch() { 
  48         return "<?xml version=\"1.0\" ?><D:propertyupdate xmlns:D=\"DAV:\"></D:propertyupdate>"; 
  51     public static Date 
parseResponseDate(String date
) { 
  52         Date returnDate 
= null
; 
  53         for (int i 
= 0; i 
< DATETIME_FORMATS
.length
; ++i
) { 
  55                 returnDate 
= DATETIME_FORMATS
[i
].parse(date
); 
  57             } catch (ParseException e
) { 
  64      * Encodes a path according to URI RFC 2396.  
  66      * If the received path doesn't start with "/", the method adds it. 
  68      * @param remoteFilePath    Path 
  69      * @return                  Encoded path according to RFC 2396, always starting with "/" 
  71     public static String 
encodePath(String remoteFilePath
) { 
  72         String encodedPath 
= Uri
.encode(remoteFilePath
, "/"); 
  73         if (!encodedPath
.startsWith("/")) 
  74             encodedPath 
= "/" + encodedPath
;