DAV-1.3.1: RFC 4918 WebDAV support

Safe HaskellNone
LanguageHaskell98

Network.Protocol.HTTP.DAV

Contents

Synopsis

Documentation

newtype DAVT m a Source #

Constructors

DAVT 

Instances

MonadTrans DAVT Source # 

Methods

lift :: Monad m => m a -> DAVT m a #

Monad m => MonadError String (DAVT m) Source # 

Methods

throwError :: String -> DAVT m a

catchError :: DAVT m a -> (String -> DAVT m a) -> DAVT m a

Monad m => MonadState DAVContext (DAVT m) Source # 

Methods

get :: DAVT m DAVContext

put :: DAVContext -> DAVT m ()

state :: (DAVContext -> (a, DAVContext)) -> DAVT m a

MonadBase b m => MonadBase b (DAVT m) Source # 

Methods

liftBase :: b α -> DAVT m α

Monad m => Monad (DAVT m) Source # 

Methods

(>>=) :: DAVT m a -> (a -> DAVT m b) -> DAVT m b #

(>>) :: DAVT m a -> DAVT m b -> DAVT m b #

return :: a -> DAVT m a #

fail :: String -> DAVT m a #

Functor m => Functor (DAVT m) Source # 

Methods

fmap :: (a -> b) -> DAVT m a -> DAVT m b #

(<$) :: a -> DAVT m b -> DAVT m a #

MonadFix m => MonadFix (DAVT m) Source # 

Methods

mfix :: (a -> DAVT m a) -> DAVT m a #

Monad m => Applicative (DAVT m) Source # 

Methods

pure :: a -> DAVT m a #

(<*>) :: DAVT m (a -> b) -> DAVT m a -> DAVT m b #

(*>) :: DAVT m a -> DAVT m b -> DAVT m b #

(<*) :: DAVT m a -> DAVT m b -> DAVT m a #

MonadIO m => MonadIO (DAVT m) Source # 

Methods

liftIO :: IO a -> DAVT m a #

Monad m => Alternative (DAVT m) Source # 

Methods

empty :: DAVT m a #

(<|>) :: DAVT m a -> DAVT m a -> DAVT m a #

some :: DAVT m a -> DAVT m [a] #

many :: DAVT m a -> DAVT m [a] #

Monad m => MonadPlus (DAVT m) Source # 

Methods

mzero :: DAVT m a #

mplus :: DAVT m a -> DAVT m a -> DAVT m a #

MonadThrow m => MonadThrow (DAVT m) Source # 

Methods

throwM :: Exception e => e -> DAVT m a #

MonadCatch m => MonadCatch (DAVT m) Source # 

Methods

catch :: Exception e => DAVT m a -> (e -> DAVT m a) -> DAVT m a #

evalDAVT :: MonadIO m => DAVURL -> DAVT m a -> m (Either String a) Source #

withDAVContext :: MonadIO m => DAVURL -> (DAVContext -> m a) -> m a Source #

caldavReportM :: MonadIO m => DAVT m Document Source #

getPropsM :: MonadIO m => DAVT m Document Source #

getContentM :: MonadIO m => DAVT m (Maybe ByteString, ByteString) Source #

Note that the entire request body is buffered in memory. To stream large files use withContentM instead.

withContentM :: MonadIO m => (Response BodyReader -> IO a) -> DAVT m a Source #

mkCol :: (MonadIO m, MonadBase IO m, MonadCatch m) => DAVT m Bool Source #

putPropsM :: MonadIO m => Document -> DAVT m () Source #

putContentM :: MonadIO m => (Maybe ByteString, ByteString) -> DAVT m () Source #

Note that the entire request body is buffered in memory; not suitable for large files.

putContentM' :: MonadIO m => (Maybe ByteString, RequestBody) -> DAVT m () Source #

To send a large file, pass eg a RequestBodyStream containing the file's content.

withLockIfPossible :: (MonadIO m, MonadBase IO m) => Bool -> DAVT m a -> DAVT m a Source #

withLockIfPossibleForDelete :: (MonadIO m, MonadBase IO m) => Bool -> DAVT m a -> DAVT m a Source #

inDAVLocation :: MonadIO m => (String -> String) -> DAVT m a -> DAVT m a Source #

Normally, DAVT actions act on the url that is provided to eg, evalDAVT. Sometimes, it's useful to adjust the url that is acted on, while remaining in the same DAV session.

inLocation temporarily adjusts the url's path, while performing a DAVT action.

For example:

import System.FilePath.Posix -- posix for url path manipulation

mkColRecursive d = do
  let parent = takeDirectory d
  when (parent /= d) $
    mkColRecursive parent
  inDAVLocation (</> d) mkCol

Note that operations that modify the DAVContext (such as setCreds and setCreds) can be run inside davLocation, but will not have any effect on the calling DAVContext.

getDAVLocation :: Monad m => DAVT m String Source #

Gets the path of the url that DAVT actions will act on.

mkDAVContext :: MonadIO m => DAVURL -> m DAVContext Source #

closeDAVContext :: MonadIO m => DAVContext -> m () Source #

Deprecated: deprecated because http-client deprecated closeManager

httpManager :: Lens' DAVContext (Maybe Manager) Source #

baseRequest :: Lens' DAVContext Request Source #

Orphan instances

Default DAVContext Source # 

Methods

def :: DAVContext #