-------------------------------------------------------------------- -- | -- Module : MediaWiki.API.Base -- Description : Collector module of types used by the MediaWiki API -- Copyright : (c) Sigbjorn Finne, 2008 -- License : BSD3 -- -- Maintainer: Sigbjorn Finne -- Stability : provisional -- Portability: portable -- -- Collector module of types used by the MediaWiki API -- -------------------------------------------------------------------- module MediaWiki.API.Base ( module MediaWiki.API.Base , module MediaWiki.API.Query.AllCategories , module MediaWiki.API.Query.AllImages , module MediaWiki.API.Query.AllLinks , module MediaWiki.API.Query.AllMessages , module MediaWiki.API.Query.AllPages , module MediaWiki.API.Query.AllUsers , module MediaWiki.API.Query.BackLinks , module MediaWiki.API.Query.Blocks , module MediaWiki.API.Query.Categories , module MediaWiki.API.Query.CategoryInfo , module MediaWiki.API.Query.CategoryMembers , module MediaWiki.API.Query.DeletedRevisions , module MediaWiki.API.Query.EmbeddedIn , module MediaWiki.API.Query.ExternalLinks , module MediaWiki.API.Query.ExternalURLUsage , module MediaWiki.API.Query.ImageInfo , module MediaWiki.API.Query.Images , module MediaWiki.API.Query.ImageUsage , module MediaWiki.API.Query.Info , module MediaWiki.API.Query.LangLinks , module MediaWiki.API.Query.LogEvents , module MediaWiki.API.Query.Random , module MediaWiki.API.Query.RecentChanges , module MediaWiki.API.Query.Revisions , module MediaWiki.API.Query.Search , module MediaWiki.API.Query.SiteInfo , module MediaWiki.API.Query.Templates , module MediaWiki.API.Query.UserContribs , module MediaWiki.API.Query.UserInfo , module MediaWiki.API.Query.Users , module MediaWiki.API.Query.WatchList , module MediaWiki.API.Action.Login , module MediaWiki.API.Action.ParamInfo , module MediaWiki.API.Action.Parse , module MediaWiki.API.Action.OpenSearch , module MediaWiki.API.Action.FeedWatchlist , module MediaWiki.API.Action.ExpandTemplates , module MediaWiki.API.Action.Sitematrix , module MediaWiki.API.Action.Unblock , module MediaWiki.API.Action.Watch , module MediaWiki.API.Action.EmailUser , module MediaWiki.API.Action.Edit , module MediaWiki.API.Action.Move , module MediaWiki.API.Action.Block , module MediaWiki.API.Action.Protect , module MediaWiki.API.Action.Undelete , module MediaWiki.API.Action.Delete , module MediaWiki.API.Action.Rollback ) where import MediaWiki.API.Types import MediaWiki.API.Query.AllCategories import MediaWiki.API.Query.AllImages import MediaWiki.API.Query.AllLinks import MediaWiki.API.Query.AllMessages import MediaWiki.API.Query.AllPages import MediaWiki.API.Query.AllUsers import MediaWiki.API.Query.BackLinks import MediaWiki.API.Query.Blocks import MediaWiki.API.Query.Categories import MediaWiki.API.Query.CategoryInfo import MediaWiki.API.Query.CategoryMembers import MediaWiki.API.Query.DeletedRevisions import MediaWiki.API.Query.EmbeddedIn import MediaWiki.API.Query.ExternalLinks import MediaWiki.API.Query.ExternalURLUsage import MediaWiki.API.Query.ImageInfo import MediaWiki.API.Query.Images import MediaWiki.API.Query.ImageUsage import MediaWiki.API.Query.Info import MediaWiki.API.Query.LangLinks import MediaWiki.API.Query.Links import MediaWiki.API.Query.LogEvents import MediaWiki.API.Query.Random import MediaWiki.API.Query.RecentChanges import MediaWiki.API.Query.Revisions import MediaWiki.API.Query.Search import MediaWiki.API.Query.SiteInfo import MediaWiki.API.Query.Templates import MediaWiki.API.Query.UserContribs import MediaWiki.API.Query.UserInfo import MediaWiki.API.Query.Users import MediaWiki.API.Query.WatchList import MediaWiki.API.Action.Login import MediaWiki.API.Action.ParamInfo import MediaWiki.API.Action.Parse import MediaWiki.API.Action.OpenSearch import MediaWiki.API.Action.FeedWatchlist import MediaWiki.API.Action.ExpandTemplates import MediaWiki.API.Action.Sitematrix import MediaWiki.API.Action.Unblock import MediaWiki.API.Action.Watch import MediaWiki.API.Action.EmailUser import MediaWiki.API.Action.Edit import MediaWiki.API.Action.Move import MediaWiki.API.Action.Block import MediaWiki.API.Action.Protect import MediaWiki.API.Action.Undelete import MediaWiki.API.Action.Delete import MediaWiki.API.Action.Rollback -- | Type collecting together the main parts of a MediaWiki API request. data Request = Request { reqAction :: Action , reqFormat :: Format , reqMaxLag :: Maybe Int } emptyRequest :: Action -> Format -> Request emptyRequest a f = Request { reqAction = a , reqFormat = f , reqMaxLag = Nothing } emptyXmlRequest :: Action -> Request emptyXmlRequest a = emptyRequest a xmlFormat data Action = Sitematrix | Login LoginRequest | Logout | Query QueryRequest [String] | ExpandTemplates ExpandTemplatesRequest | Parse ParseRequest | OpenSearch OpenSearchRequest | FeedWatch FeedWatchListRequest | Help HelpRequest | ParamInfo ParamInfoRequest | Unblock UnblockRequest | Watch WatchRequest | EmailUser EmailUserRequest | Edit EditRequest | Move MoveRequest | Block BlockRequest | Protect ProtectRequest | Undelete UndeleteRequest | Delete DeleteRequest | Rollback RollbackRequest | OtherAction String [ValueName] infoRequest :: InfoRequest infoRequest = emptyInfoRequest revisionRequest :: RevisionRequest revisionRequest = emptyRevisionRequest linksRequest :: LinksRequest linksRequest = emptyLinksRequest langLinksRequest :: LangLinksRequest langLinksRequest = emptyLangLinksRequest imagesRequest :: ImagesRequest imagesRequest = emptyImagesRequest imageInfoRequest :: ImageInfoRequest imageInfoRequest = emptyImageInfoRequest templatesRequest :: TemplatesRequest templatesRequest = emptyTemplatesRequest categoriesRequest :: CategoriesRequest categoriesRequest = emptyCategoriesRequest allCategoriesRequest :: AllCategoriesRequest allCategoriesRequest = emptyAllCategoriesRequest allImagesRequest :: AllImagesRequest allImagesRequest = emptyAllImagesRequest allLinksRequest :: AllLinksRequest allLinksRequest = emptyAllLinksRequest allMessagesRequest :: AllMessagesRequest allMessagesRequest = emptyAllMessagesRequest allPagesRequest :: AllPagesRequest allPagesRequest = emptyAllPagesRequest allUsersRequest :: AllUsersRequest allUsersRequest = emptyAllUsersRequest backLinksRequest :: BackLinksRequest backLinksRequest = emptyBackLinksRequest embeddedInRequest :: EmbeddedInRequest embeddedInRequest = emptyEmbeddedInRequest imageUsageRequest :: ImageUsageRequest imageUsageRequest = emptyImageUsageRequest categoryInfoRequest :: CategoryInfoRequest categoryInfoRequest = emptyCategoryInfoRequest categoryMembersRequest :: CategoryMembersRequest categoryMembersRequest = emptyCategoryMembersRequest externalLinksRequest :: ExternalLinksRequest externalLinksRequest = emptyExternalLinksRequest externalURLUsageRequest :: ExternalURLUsageRequest externalURLUsageRequest = emptyExternalURLUsageRequest logEventsRequest :: LogEventsRequest logEventsRequest = emptyLogEventsRequest recentChangesRequest :: RecentChangesRequest recentChangesRequest = emptyRecentChangesRequest searchRequest :: String -> SearchRequest searchRequest = emptySearchRequest siteInfoRequest :: SiteInfoRequest siteInfoRequest = emptySiteInfoRequest userContribsRequest :: UserContribsRequest userContribsRequest = emptyUserContribsRequest userInfoRequest :: UserInfoRequest userInfoRequest = emptyUserInfoRequest watchListRequest :: WatchListRequest watchListRequest = emptyWatchListRequest blocksRequest :: BlocksRequest blocksRequest = emptyBlocksRequest deletedRevisionsRequest :: DeletedRevisionsRequest deletedRevisionsRequest = emptyDeletedRevisionsRequest usersRequest :: UsersRequest usersRequest = emptyUsersRequest randomPagesRequest :: RandomPagesRequest randomPagesRequest = emptyRandomPagesRequest data QueryRequestKind = InfoProp InfoRequest | RevisionsProp RevisionRequest | LinksPropProp LinksRequest | LangLinksProp LangLinksRequest | ImagesProp ImagesRequest | ImageInfoProp ImageInfoRequest | TemplatesProp TemplatesRequest | CategoriesProp CategoriesRequest | AllCategoriesProp AllCategoriesRequest | AllImagesProp AllImagesRequest | AllLinksProp AllLinksRequest | AllMessagesProp AllMessagesRequest | AllPagesProp AllPagesRequest | AllUsersProp AllUsersRequest | BacklinksProp BackLinksRequest | EmbeddedInProp EmbeddedInRequest | ImageUsageProp ImageUsageRequest | CategoryInfoProp CategoryInfoRequest | CategoryMembersProp CategoryMembersRequest | ExternalLinksProp ExternalLinksRequest | ExternalURLUsageProp ExternalURLUsageRequest | LogEventsProp LogEventsRequest | RecentChangesProp RecentChangesRequest | SearchProp SearchRequest | SiteInfoProp SiteInfoRequest | UserContribsProp UserContribsRequest | UserInfoProp UserInfoRequest | WatchListProp WatchListRequest | BlocksProp BlocksRequest | DeletedRevsProp DeletedRevisionsRequest | UsersProp UsersRequest | RandomProp RandomPagesRequest qKind :: QueryRequestKind -> QueryKind qKind q = case q of InfoProp k -> queryKind k RevisionsProp k -> queryKind k LinksPropProp k -> queryKind k LangLinksProp k -> queryKind k ImagesProp k -> queryKind k ImageInfoProp k -> queryKind k TemplatesProp k -> queryKind k CategoriesProp k -> queryKind k AllCategoriesProp k -> queryKind k AllImagesProp k -> queryKind k AllLinksProp k -> queryKind k AllMessagesProp k -> queryKind k AllPagesProp k -> queryKind k AllUsersProp k -> queryKind k BacklinksProp k -> queryKind k EmbeddedInProp k -> queryKind k ImageUsageProp k -> queryKind k CategoryInfoProp k -> queryKind k CategoryMembersProp k -> queryKind k ExternalLinksProp k -> queryKind k ExternalURLUsageProp k -> queryKind k LogEventsProp k -> queryKind k RecentChangesProp k -> queryKind k SearchProp k -> queryKind k SiteInfoProp k -> queryKind k UserContribsProp k -> queryKind k UserInfoProp k -> queryKind k WatchListProp k -> queryKind k BlocksProp k -> queryKind k DeletedRevsProp k -> queryKind k UsersProp k -> queryKind k RandomProp k -> queryKind k