{-# 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 _ x
| x == "0" = [(Depth0, "")]
| x == "1" = [(Depth1, "")]
| x == "infinity" = [(DepthInfinity, "")]
| otherwise = fail "invalid"
instance Show Depth where
show Depth0 = "0"
show Depth1 = "1"
show DepthInfinity = "infinity"
data DAVContext = DAVContext {
_allowedMethods :: [B.ByteString]
, _baseRequest :: Request
, _basicusername :: B.ByteString
, _basicpassword :: B.ByteString
, _complianceClasses :: [B.ByteString]
, _depth :: Maybe Depth
, _httpManager :: Maybe Manager
, _lockToken :: Maybe B.ByteString
, _userAgent :: B.ByteString
}
makeLenses ''DAVContext