{-# 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 _ x :: String
x
| String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== "0" = [(Depth
Depth0, "")]
| String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== "1" = [(Depth
Depth1, "")]
| String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== "infinity" = [(Depth
DepthInfinity, "")]
| Bool
otherwise = ReadS Depth
forall (m :: * -> *) a. MonadFail m => String -> m a
fail "invalid"
instance Show Depth where
show :: Depth -> String
show Depth0 = "0"
show Depth1 = "1"
show DepthInfinity = "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