diff options
author | Joey Hess <joey@kitenet.net> | 2014-02-25 16:09:50 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-02-25 16:16:14 -0400 |
commit | 67b52a441b98f4699688fe21e49178794a6feeeb (patch) | |
tree | fa96edee0803439ef575454bfff201f75f3888fa /Remote/WebDAV | |
parent | f6e6671641585fcdf37201df9914842b09392089 (diff) |
more DAV url fixes for windows
Diffstat (limited to 'Remote/WebDAV')
-rw-r--r-- | Remote/WebDAV/DavUrl.hs | 44 |
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 ++ "/..") |