/* * 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.request.login; import java.util.Map; import org.wikipediacleaner.api.APIException; import org.wikipediacleaner.api.constants.ConnectionInformation; import org.wikipediacleaner.api.constants.EnumWikipedia; import org.wikipediacleaner.api.data.LoginResult; import org.wikipediacleaner.api.request.ApiRequest; /** * MediaWiki API login requests. */ public class ApiLoginRequest extends ApiRequest { // ========================================================================== // API properties // ========================================================================== /** * Property for Name. */ public final static String PROPERTY_NAME = "lgname"; /** * Property for Password. */ public final static String PROPERTY_PASSWORD = "lgpassword"; /** * Property for Token. */ public final static String PROPERTY_TOKEN = "lgtoken"; /** * Property for User Name. */ public final static String PROPERTY_USER_NAME = "lgusername"; /** * Property for User Id. */ public final static String PROPERTY_USER_ID = "lguserid"; // ========================================================================== // Request management // ========================================================================== private final ApiLoginResult result; /** * @param wiki Wiki. * @param result Parser for result depending on chosen format. */ public ApiLoginRequest(EnumWikipedia wiki, ApiLoginResult result) { super(wiki); this.result = result; } /** * Login. * * @param username User name. * @param password Password. * @return Login result. */ public LoginResult login(String username, String password) throws APIException { Map<String, String> properties = getProperties(ACTION_LOGIN, result.getFormat()); properties.put(PROPERTY_NAME, username); properties.put(PROPERTY_PASSWORD, password); ConnectionInformation connection = getWiki().getConnection(); if ((connection != null) && (connection.getLoginToken() != null)) { properties.put(PROPERTY_TOKEN, connection.getLoginToken()); } LoginResult loginResult = result.executeLogin(properties); return loginResult; } }