/*
* 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.query.meta;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.wikipediacleaner.api.APIException;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.api.data.User;
import org.wikipediacleaner.api.request.ApiJsonResult;
import org.wikipediacleaner.api.request.ApiRequest;
import com.fasterxml.jackson.databind.JsonNode;
/**
* MediaWiki API JSON Tokens results.
*/
public class ApiJsonTokensResult extends ApiJsonResult implements ApiTokensResult {
/**
* @param wiki Wiki on which requests are made.
* @param httpClient HTTP client for making requests.
*/
public ApiJsonTokensResult(
EnumWikipedia wiki,
HttpClient httpClient) {
super(wiki, httpClient);
}
/**
* Execute token request.
*
* @param properties Properties defining request.
* @throws APIException
*/
@Override
public void executeTokens(Map<String, String> properties)
throws APIException {
JsonNode root = getRoot(properties, ApiRequest.MAX_ATTEMPTS);
if (root != null) {
JsonNode tokens = root.path("query").path("tokens");
JsonNode csrfNode = tokens.get(ApiTokensRequest.TOKEN_CSRF);
if (csrfNode != null) {
String csrfToken = csrfNode.textValue();
getWiki().getConnection().setEditToken(csrfToken);
User user = getWiki().getConnection().getUser();
if ((user != null) && user.hasRight(User.RIGHT_DELETE)) {
getWiki().getConnection().setDeleteToken(csrfToken);
}
}
JsonNode loginNode = tokens.get(ApiTokensRequest.TOKEN_LOGIN);
if (loginNode != null) {
String loginToken = loginNode.textValue();
getWiki().getConnection().setLoginToken(loginToken);
}
}
}
}