module MediaWiki.API.Query.Revisions where
import MediaWiki.API.Types
import MediaWiki.API.Utils
data RevisionRequest
= RevisionRequest
{ rvProp :: [String]
, rvLimit :: Maybe Int
, rvStartID :: Maybe RevID
, rvEndID :: Maybe RevID
, rvStart :: Maybe TimeString
, rvEnd :: Maybe TimeString
, rvDir :: Maybe Direction
, rvUser :: Maybe UserName
, rvExcludeUser :: Maybe UserName
, rvExpandTemplates :: Maybe Bool
, rvSection :: Maybe String
, rvTokens :: [String]
}
instance APIRequest RevisionRequest where
queryKind _ = QProp "revisions"
showReq r =
[ opt1 "rvprop" (rvProp r)
, mbOpt "rvlimit" show (rvLimit r)
, mbOpt "rvstartid" id (rvStartID r)
, mbOpt "rvendid" id (rvEndID r)
, mbOpt "rvstart" id (rvStart r)
, mbOpt "rvend" id (rvEnd r)
, mbOpt "rvdir" (\ x -> if x == Up then "ascending" else "descending")
(rvDir r)
, mbOpt "rvuser" id (rvUser r)
, mbOpt "rvexcludeuser" id (rvExcludeUser r)
, optB "rvexpandtemplates" (fromMaybe False (rvExpandTemplates r))
, mbOpt "rvsection" id (rvSection r)
, opt1 "rvtoken" (rvTokens r)
]
emptyRevisionRequest :: RevisionRequest
emptyRevisionRequest = RevisionRequest
{ rvProp = []
, rvLimit = Nothing
, rvStartID = Nothing
, rvEndID = Nothing
, rvStart = Nothing
, rvEnd = Nothing
, rvDir = Nothing
, rvUser = Nothing
, rvExcludeUser = Nothing
, rvExpandTemplates = Nothing
, rvTokens = []
, rvSection = Nothing
}
data RevisionsResponse
= RevisionsResponse
{ rvPages :: [(PageTitle,[Revision])]
, rvContinue :: Maybe String
}
emptyRevisionsResponse :: RevisionsResponse
emptyRevisionsResponse
= RevisionsResponse
{ rvPages = []
, rvContinue = Nothing
}
data Revision
= Revision
{ revPage :: PageTitle
, revRevId :: RevID
, revIsMinor :: Bool
, revUser :: String
, revIsAnon :: Bool
, revTimestamp :: TimeString
, revSize :: Integer
, revComment :: Maybe String
, revContent :: Maybe String
}
emptyRevision :: PageTitle -> Revision
emptyRevision pg
= Revision
{ revPage = pg
, revRevId = nullRevId
, revIsMinor = False
, revUser = nullUser
, revIsAnon = False
, revTimestamp = nullTimestamp
, revSize = 0
, revComment = Nothing
, revContent = Nothing
}