{-# LANGUAGE TemplateHaskell #-}
module Network.Protocol.HTTP.DAV.TH where
import Control.Lens (makeLenses)
import qualified Data.ByteString as B
import Network.HTTP.Client (Manager, Request)
data Depth = Depth0 | Depth1 | DepthInfinity
instance Read Depth where
readsPrec :: Int -> ReadS Depth
readsPrec Int
_ String
x
| String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"0" = [(Depth
Depth0, String
"")]
| String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"1" = [(Depth
Depth1, String
"")]
| String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"infinity" = [(Depth
DepthInfinity, String
"")]
| Bool
otherwise = ReadS Depth
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"invalid"
instance Show Depth where
show :: Depth -> String
show Depth
Depth0 = String
"0"
show Depth
Depth1 = String
"1"
show Depth
DepthInfinity = String
"infinity"
data DAVContext = DAVContext {
DAVContext -> [ByteString]
_allowedMethods :: [B.ByteString]
, DAVContext -> Request
_baseRequest :: Request
, DAVContext -> ByteString
_basicusername :: B.ByteString
, DAVContext -> ByteString
_basicpassword :: B.ByteString
, DAVContext -> [ByteString]
_complianceClasses :: [B.ByteString]
, DAVContext -> Maybe Depth
_depth :: Maybe Depth
, DAVContext -> Maybe Manager
_httpManager :: Maybe Manager
, DAVContext -> Maybe ByteString
_lockToken :: Maybe B.ByteString
, DAVContext -> ByteString
_userAgent :: B.ByteString
}
makeLenses ''DAVContext