Safe Haskell | None |
---|
- newtype DAVT m a = DAVT {
- runDAVT :: EitherT String (StateT DAVContext m) a
- evalDAVT :: MonadIO m => DAVURL -> DAVT m a -> m (Either String a)
- withDAVContext :: (MonadIO m, MonadMask m) => DAVURL -> (DAVContext -> m a) -> m a
- runDAVContext :: MonadIO m => DAVContext -> DAVT m a -> m (Either String a, DAVContext)
- setCreds :: MonadIO m => ByteString -> ByteString -> DAVT m ()
- setDepth :: MonadIO m => Maybe Depth -> DAVT m ()
- setResponseTimeout :: MonadIO m => Maybe Int -> DAVT m ()
- setUserAgent :: MonadIO m => ByteString -> DAVT m ()
- data DAVContext = DAVContext {
- _allowedMethods :: [ByteString]
- _baseRequest :: Request
- _basicusername :: ByteString
- _basicpassword :: ByteString
- _complianceClasses :: [ByteString]
- _depth :: Maybe Depth
- _httpManager :: Maybe Manager
- _lockToken :: Maybe ByteString
- _userAgent :: ByteString
- caldavReportM :: MonadIO m => DAVT m Document
- delContentM :: MonadIO m => DAVT m ()
- getPropsM :: MonadIO m => DAVT m Document
- getContentM :: MonadIO m => DAVT m (Maybe ByteString, ByteString)
- withContentM :: MonadIO m => (Response BodyReader -> IO a) -> DAVT m a
- mkCol :: (MonadIO m, MonadBase IO m, MonadCatch m) => DAVT m Bool
- moveContentM :: MonadIO m => ByteString -> DAVT m ()
- putPropsM :: MonadIO m => Document -> DAVT m ()
- putContentM :: MonadIO m => (Maybe ByteString, ByteString) -> DAVT m ()
- putContentM' :: MonadIO m => (Maybe ByteString, RequestBody) -> DAVT m ()
- withLockIfPossible :: (MonadIO m, MonadBase IO m, MonadCatch m, MonadMask m) => Bool -> DAVT m a -> DAVT m a
- withLockIfPossibleForDelete :: (MonadIO m, MonadBase IO m, MonadCatch m, MonadMask m) => Bool -> DAVT m a -> DAVT m a
- inDAVLocation :: MonadIO m => (String -> String) -> DAVT m a -> DAVT m a
- getDAVLocation :: Monad m => DAVT m String
- mkDAVContext :: MonadIO m => DAVURL -> m DAVContext
- closeDAVContext :: MonadIO m => DAVContext -> m ()
- data Depth
- = Depth0
- | Depth1
- | DepthInfinity
- data DAVContext = DAVContext {
- _allowedMethods :: [ByteString]
- _baseRequest :: Request
- _basicusername :: ByteString
- _basicpassword :: ByteString
- _complianceClasses :: [ByteString]
- _depth :: Maybe Depth
- _httpManager :: Maybe Manager
- _lockToken :: Maybe ByteString
- _userAgent :: ByteString
- userAgent :: Lens' DAVContext ByteString
- lockToken :: Lens' DAVContext (Maybe ByteString)
- httpManager :: Lens' DAVContext (Maybe Manager)
- depth :: Lens' DAVContext (Maybe Depth)
- complianceClasses :: Lens' DAVContext [ByteString]
- basicusername :: Lens' DAVContext ByteString
- basicpassword :: Lens' DAVContext ByteString
- baseRequest :: Lens' DAVContext Request
- allowedMethods :: Lens' DAVContext [ByteString]
Documentation
DAVT | |
|
MonadTrans DAVT | |
Monad m => MonadError String (DAVT m) | |
Monad m => MonadState DAVContext (DAVT m) | |
MonadBase b m => MonadBase b (DAVT m) | |
Monad m => Monad (DAVT m) | |
Monad m => Functor (DAVT m) | |
MonadFix m => MonadFix (DAVT m) | |
Monad m => MonadPlus (DAVT m) | |
Monad m => Applicative (DAVT m) | |
MonadThrow m => MonadThrow (DAVT m) | |
MonadCatch m => MonadCatch (DAVT m) | |
MonadMask m => MonadMask (DAVT m) | |
MonadIO m => MonadIO (DAVT m) |
withDAVContext :: (MonadIO m, MonadMask m) => DAVURL -> (DAVContext -> m a) -> m aSource
runDAVContext :: MonadIO m => DAVContext -> DAVT m a -> m (Either String a, DAVContext)Source
setCreds :: MonadIO m => ByteString -> ByteString -> DAVT m ()Source
setResponseTimeout :: MonadIO m => Maybe Int -> DAVT m ()Source
setUserAgent :: MonadIO m => ByteString -> DAVT m ()Source
data DAVContext Source
DAVContext | |
|
Default DAVContext | |
Monad m => MonadState DAVContext (DAVT m) |
caldavReportM :: MonadIO m => DAVT m DocumentSource
delContentM :: MonadIO m => DAVT m ()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 aSource
moveContentM :: MonadIO m => ByteString -> 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, MonadCatch m, MonadMask m) => Bool -> DAVT m a -> DAVT m aSource
withLockIfPossibleForDelete :: (MonadIO m, MonadBase IO m, MonadCatch m, MonadMask m) => Bool -> DAVT m a -> DAVT m aSource
inDAVLocation :: MonadIO m => (String -> String) -> DAVT m a -> DAVT m aSource
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 StringSource
Gets the path of the url that DAVT actions will act on.
mkDAVContext :: MonadIO m => DAVURL -> m DAVContextSource
closeDAVContext :: MonadIO m => DAVContext -> m ()Source
data DAVContext Source
DAVContext | |
|
Default DAVContext | |
Monad m => MonadState DAVContext (DAVT m) |
lockToken :: Lens' DAVContext (Maybe ByteString)Source
httpManager :: Lens' DAVContext (Maybe Manager)Source
depth :: Lens' DAVContext (Maybe Depth)Source