module MediaWiki.API.Query.Search where
import MediaWiki.API.Types
import MediaWiki.API.Utils
data SearchRequest
= SearchRequest
{ srSearch :: String
, srNamespaces :: [NamespaceID]
, srWhat :: Bool
, srRedirects :: Bool
, srOffset :: Maybe String
, srLimit :: Maybe Int
}
instance APIRequest SearchRequest where
queryKind _ = QList "search"
showReq r
= [ mbOpt "srsearch" id (Just (srSearch r))
, opt1 "srnamespace" (srNamespaces r)
, opt "srwhat" ((\x -> if x then "text" else "title") (srWhat r))
, optB "srredirects" (srRedirects r)
, mbOpt "sroffset" id (srOffset r)
, mbOpt "srlimit" show (srLimit r)
]
emptySearchRequest :: String -> SearchRequest
emptySearchRequest s = SearchRequest
{ srSearch = s
, srNamespaces = []
, srWhat = False
, srRedirects = False
, srOffset = Nothing
, srLimit = Nothing
}
data SearchResponse
= SearchResponse
{ srPages :: [PageTitle]
, srContinue :: Maybe String
}
emptySearchResponse :: SearchResponse
emptySearchResponse = SearchResponse
{ srPages = []
, srContinue = Nothing
}