All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.bliki.api.User Maven / Gradle / Ivy

The newest version!
package info.bliki.api;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
 * Manages user data from the Wikimedia API.
 *
 * See also Mediawiki
 * API:Login
 */
public class User {
    protected static final String SUCCESS_ID = "Success";
    protected static final String NEED_TOKEN_ID = "NeedToken";
    private static final String ILLEGAL_ID = "Illegal";

    private String result;
    private String userId;

    private final String username;

    private String normalizedUsername;
    private String token;

    private final String password;
    private final String actionUrl;
    private final String domain;

    protected Connector connector;

    /**
     * Create a User for a Mediawiki wiki
     *
     * @param name User Name
     * @param password Password
     * @param mediawikiApiUrl A mediawiki API Url
     *                        (example: http://meta.wikimedia.org/w/api.php
     */
    public User(String name, String password, String mediawikiApiUrl) {
        this(name, password, mediawikiApiUrl, "");
    }

    /**
     * Create a User for a Mediawiki wiki
     *
     * @param name User Name
     * @param password Password
     * @param mediawikiApiUrl
     *          A mediawiki API Url (example: http://meta.wikimedia.org/w/api.php
     * @param domain Domain (optional)
     */
    public User(String name, String password, String mediawikiApiUrl, String domain) {
        super();
        this.result = ILLEGAL_ID;
        this.userId = "";
        this.username = name;
        this.normalizedUsername = "";
        this.password = password;
        this.domain = domain;
        this.actionUrl = mediawikiApiUrl;
        this.connector = new Connector();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(normalizedUsername, user.normalizedUsername);
    }

    @Override
    public int hashCode() {
        return Objects.hash(normalizedUsername);
    }

    /**
     * Complete the users login information. The user must contain a username,
     * password and actionURL. See Mediawiki API:Login
     *
     * @return true if th login was successful; false
     *         otherwise.
     * @see User#getActionUrl()
     */
    public boolean login() {
        return connector.login(this) != null;
    }

    /**
     * Get the content of Mediawiki wiki pages.
     *
     * @param listOfTitleStrings
     *          a list of title Strings "ArticleA,ArticleB,..."
     * @return a list of downloaded Mediawiki pages.
     */
    public List queryContent(List listOfTitleStrings) {
        return connector.queryContent(this, listOfTitleStrings);
    }

    /**
     * Get the content of Mediawiki wiki pages.
     *
     * @param listOfTitleStrings
     *          a list of title Strings "ArticleA,ArticleB,..."
     * @return a list of downloaded Mediawiki pages.
     */
    public List queryContent(String... listOfTitleStrings) {
        return queryContent(arrayToList(listOfTitleStrings));
    }

    public List queryCategories(List listOfTitleStrings) {
        return connector.queryCategories(this, listOfTitleStrings);
    }

    public List queryCategories(String... listOfTitleStrings) {
        return queryCategories(arrayToList(listOfTitleStrings));
    }

    public List queryInfo(List listOfTitleStrings) {
        return connector.queryInfo(this, listOfTitleStrings);
    }

    public List queryInfo(String... listOfTitleStrings) {
        return queryInfo(arrayToList(listOfTitleStrings));
    }

    public List queryLinks(List listOfTitleStrings) {
        return connector.queryLinks(this, listOfTitleStrings);
    }

    public List queryLinks(String... listOfTitleStrings) {
        return queryLinks(arrayToList(listOfTitleStrings));
    }

    public List queryImageinfo(List listOfImageStrings) {
        return connector.queryImageinfo(this, listOfImageStrings);
    }

    public List queryImageinfo(List listOfImageStrings, int imageWidth) {
        return connector.queryImageinfo(this, listOfImageStrings, imageWidth);
    }

    public List queryImageinfo(String... listOfImageStrings) {
        return queryImageinfo(arrayToList(listOfImageStrings));
    }

    public List queryImageinfo(String[] listOfImageStrings, int imageWidth) {
        return queryImageinfo(arrayToList(listOfImageStrings), imageWidth);
    }

    public String getResult() {
        return result;
    }

    protected void setResult(String result) {
        this.result = result;
    }

    public String getToken() {
        return token;
    }

    protected void setToken(String token) {
        this.token = token;
    }

    public String getUserid() {
        return userId;
    }

    protected void setUserid(String userid) {
        this.userId = userid;
    }

    public String getUsername() {
        return username;
    }

    /**
     * Get the Mediawiki API Url defined for this user(example:
     * http://meta.wikimedia.org/w/api.php)
     */
    public String getActionUrl() {
        return actionUrl;
    }

    public String getDomain() {
        return domain;
    }

    public String getPassword() {
        return password;
    }

    public boolean isAuthenticated() {
        return SUCCESS_ID.equals(result);
    }

    @Override
    public String toString() {
        return "Result: " + result + "; UserID: " + userId + "; UserName: " + username + "; NormalizedUsername: "
                + normalizedUsername + "; Token: " + token + "; ActionURL: " + actionUrl;
    }

    public String getNormalizedUsername() {
        return normalizedUsername;
    }

    protected void setNormalizedUsername(String normalizedUsername) {
        this.normalizedUsername = normalizedUsername;
    }

    private List arrayToList(String[] listOfTitleStrings) {
        List list = new ArrayList<>();
        if (listOfTitleStrings != null) {
            Collections.addAll(list, listOfTitleStrings);
        }
        return list;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy