/* * WPCleaner: A tool to help on Wikipedia maintenance tasks. * Copyright (C) 2013 Nicolas Vervelle * * See README.txt file for licensing information. */ package org.wikipediacleaner.api; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpConnectionManager; import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; import org.apache.commons.httpclient.params.HttpMethodParams; import org.wikipediacleaner.api.check.CheckWiki; import org.wikipediacleaner.api.impl.MediaWikiAPI; /** * Factory for API access. */ public class APIFactory { /** * MediaWiki API. */ private static API api; /** * Check Wiki project. */ private static CheckWiki checkWiki; // Initialize static members static { // Initialize MediaWiki API HttpConnectionManager connectionManger = new MultiThreadedHttpConnectionManager(); HttpClient httpClient = createHttpClient(connectionManger); httpClient.getParams().setParameter("http.protocol.single-cookie-header", Boolean.TRUE); api = new MediaWikiAPI(httpClient); // Initialize WMF Labs access connectionManger = new MultiThreadedHttpConnectionManager(); httpClient = createHttpClient(connectionManger); HttpServer labs = new HttpServer(httpClient, "http://tools.wmflabs.org/"); // Initialize Check Wiki project checkWiki = new CheckWiki(labs); } /** * @return MediaWiki API implementation. */ public static API getAPI() { return api; } /** * @return Access to Check Wiki project. */ public static CheckWiki getCheckWiki() { return checkWiki; } /** * Create an HTTP connection. * * @return A HTTP connection. */ private static HttpClient createHttpClient(HttpConnectionManager manager) { HttpClient client = new HttpClient(manager); client.getParams().setParameter( HttpMethodParams.USER_AGENT, "WPCleaner (+http://en.wikipedia.org/wiki/User:NicoV/Wikipedia_Cleaner/Documentation)"); return client; } }