aboutsummaryrefslogtreecommitdiff
path: root/Remote/WebDAV
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-02-25 16:09:50 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-02-25 16:16:14 -0400
commit67b52a441b98f4699688fe21e49178794a6feeeb (patch)
treefa96edee0803439ef575454bfff201f75f3888fa /Remote/WebDAV
parentf6e6671641585fcdf37201df9914842b09392089 (diff)
more DAV url fixes for windows
Diffstat (limited to 'Remote/WebDAV')
-rw-r--r--Remote/WebDAV/DavUrl.hs44
1 files changed, 44 insertions, 0 deletions
diff --git a/Remote/WebDAV/DavUrl.hs b/Remote/WebDAV/DavUrl.hs
new file mode 100644
index 000000000..4862c4f37
--- /dev/null
+++ b/Remote/WebDAV/DavUrl.hs
@@ -0,0 +1,44 @@
+{- WebDAV urls.
+ -
+ - Copyright 2014 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+{-# LANGUAGE CPP #-}
+
+module Remote.WebDAV.DavUrl where
+
+import Types
+import Locations
+
+import Network.URI (normalizePathSegments)
+import System.FilePath.Posix
+#ifdef mingw32_HOST_OS
+import Data.String.Utils
+#endif
+
+type DavUrl = String
+
+{- The directory where files(s) for a key are stored. -}
+davLocation :: DavUrl -> Key -> DavUrl
+davLocation baseurl k = addTrailingPathSeparator $
+ davUrl baseurl $ hashdir </> keyFile k
+ where
+#ifndef mingw32_HOST_OS
+ hashdir = hashDirLower k
+#else
+ hashdir = replace "\\" "/" (hashDirLower k)
+#endif
+
+{- Where we store temporary data for a key as it's being uploaded. -}
+tmpLocation :: DavUrl -> Key -> DavUrl
+tmpLocation baseurl k = addTrailingPathSeparator $
+ davUrl baseurl $ "tmp" </> keyFile k
+
+davUrl :: DavUrl -> FilePath -> DavUrl
+davUrl baseurl file = baseurl </> file
+
+urlParent :: DavUrl -> DavUrl
+urlParent url = dropTrailingPathSeparator $
+ normalizePathSegments (dropTrailingPathSeparator url ++ "/..")