MediaWiki/API/Query/WatchList.hs

--------------------------------------------------------------------
-- |
-- Module : MediaWiki.API.Query.WatchList
-- Description : Representing 'watchlist' requests.
-- Copyright : (c) Sigbjorn Finne, 2008
-- License : BSD3
--
-- Maintainer: Sigbjorn Finne <sof@forkIO.com>
-- Stability : provisional
-- Portability: portable
--
-- Representing 'watchlist' requests.
-- 
--------------------------------------------------------------------
module MediaWiki.API.Query.WatchList where

import MediaWiki.API.Types
import MediaWiki.API.Utils

data WatchListRequest
 = WatchListRequest
 { wlAllRev :: Bool
 , wlStart :: Maybe Timestamp
 , wlEnd :: Maybe Timestamp
 , wlNamespaces :: [NamespaceID]
 , wlDir :: Maybe TimeArrow
 , wlLimit :: Maybe Int
 , wlProp :: [String]
 , wlShow :: [String]
 }

instance APIRequest WatchListRequest where
 queryKind _ = QList "watchlist"
 showReq r
 = [ optB "wlallrev" (wlAllRev r)
 , mbOpt "wlstart" id (wlStart r)
 , mbOpt "wlend" id (wlEnd r)
 , opt1 "wlnamespace" (wlNamespaces r)
 , mbOpt "wldir" (\ x -> if x==Earlier then "older" else "newer")
 (wlDir r)
 , mbOpt "wllimit" show (wlLimit r)
 , opt1 "wlprop" (wlProp r)
 , opt1 "wlshow" (wlShow r)
 ]

emptyWatchListRequest :: WatchListRequest
emptyWatchListRequest = WatchListRequest
 { wlAllRev = False
 , wlStart = Nothing
 , wlEnd = Nothing
 , wlNamespaces = []
 , wlDir = Nothing
 , wlLimit = Nothing
 , wlProp = []
 , wlShow = []
 }

data WatchListResponse 
 = WatchListResponse
 { wlWatch :: WatchList
 , wlContinue :: Maybe String
 }

emptyWatchListResponse :: WatchListResponse
emptyWatchListResponse = WatchListResponse
 { wlWatch = emptyWatchList
 , wlContinue = Nothing
 }

data WatchList
 = WatchList
 { wlPage :: PageTitle
 , wlRevId :: Maybe RevID
 , wlUser :: Maybe UserName
 , wlIsAnon :: Bool
 , wlIsNew :: Bool
 , wlIsMinor :: Bool
 , wlIsPatrolled :: Bool
 , wlTimestamp :: Maybe Timestamp
 , wlLength :: Maybe Int
 , wlOldLength :: Maybe Int
 , wlComment :: Maybe String
 }
 
emptyWatchList :: WatchList
emptyWatchList
 = WatchList
 { wlPage = emptyPageTitle
 , wlRevId = Nothing
 , wlUser = Nothing
 , wlIsAnon = False
 , wlIsNew = False
 , wlIsMinor = False
 , wlIsPatrolled = False
 , wlTimestamp = Nothing
 , wlLength = Nothing
 , wlOldLength = Nothing
 , wlComment = Nothing
 }
 

AltStyle によって変換されたページ (->オリジナル) /