DAV-1.3.4: RFC 4918 WebDAV support
Safe HaskellNone
LanguageHaskell98

Network.Protocol.HTTP.DAV

Synopsis

Documentation

newtype DAVT (m :: Type -> Type) a #

Constructors

DAVT 

Instances

Instances details
MonadTrans DAVT # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

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

Monad m => MonadError String (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

throwError :: String -> DAVT m a #

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

Monad m => MonadState DAVContext (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

get :: DAVT m DAVContext #

put :: DAVContext -> DAVT m () #

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

MonadBase b m => MonadBase b (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

liftBase :: b α -> DAVT m α #

MonadFix m => MonadFix (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

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

MonadIO m => MonadIO (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

liftIO :: IO a -> DAVT m a #

Monad m => Alternative (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

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 => Applicative (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

pure :: a -> DAVT m a #

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

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

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

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

Functor m => Functor (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

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

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

Monad m => Monad (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

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 #

Monad m => MonadPlus (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

mzero :: DAVT m a #

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

MonadCatch m => MonadCatch (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

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

MonadThrow m => MonadThrow (DAVT m) # 
Instance details

Defined in Network.Protocol.HTTP.DAV

Methods

throwM :: (HasCallStack, Exception e) => e -> DAVT m a #

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

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

setCreds :: forall (m :: Type -> Type). MonadIO m => ByteString -> ByteString -> DAVT m () #

setDepth :: forall (m :: Type -> Type). MonadIO m => Maybe Depth -> DAVT m () #

setResponseTimeout :: forall (m :: Type -> Type). MonadIO m => Maybe Int -> DAVT m () #

setUserAgent :: forall (m :: Type -> Type). MonadIO m => ByteString -> DAVT m () #

caldavReportM :: forall (m :: Type -> Type). MonadIO m => DAVT m Document #

delContentM :: forall (m :: Type -> Type). MonadIO m => DAVT m () #

getPropsM :: forall (m :: Type -> Type). MonadIO m => DAVT m Document #

getContentM :: forall (m :: Type -> Type). MonadIO m => DAVT m (Maybe ByteString, ByteString) #

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

withContentM :: forall (m :: Type -> Type) a. MonadIO m => (Response BodyReader -> IO a) -> DAVT m a #

mkCol :: forall (m :: Type -> Type). (MonadIO m, MonadBase IO m, MonadCatch m) => DAVT m Bool #

moveContentM :: forall (m :: Type -> Type). MonadIO m => ByteString -> DAVT m () #

putPropsM :: forall (m :: Type -> Type). MonadIO m => Document -> DAVT m () #

putContentM :: forall (m :: Type -> Type). MonadIO m => (Maybe ByteString, ByteString) -> DAVT m () #

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

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

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

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

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

inDAVLocation :: forall (m :: Type -> Type) a. MonadIO m => (String -> String) -> DAVT m a -> DAVT m a #

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 :: forall (m :: Type -> Type). Monad m => DAVT m String #

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

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

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

Deprecated: deprecated because http-client deprecated closeManager

data Depth #

Constructors

Depth0 
Depth1 
DepthInfinity 

Instances

Instances details
Read Depth # 
Instance details

Defined in Network.Protocol.HTTP.DAV.TH

Show Depth # 
Instance details

Defined in Network.Protocol.HTTP.DAV.TH

Methods

showsPrec :: Int -> Depth -> ShowS #

show :: Depth -> String #

showList :: [Depth] -> ShowS #

Orphan instances

Default DAVContext # 
Instance details

Methods

def :: DAVContext #