io.vertx.core.net.ProxyOptions.java Source code

Java tutorial

Introduction

Here is the source code for io.vertx.core.net.ProxyOptions.java

Source

/*
 * Copyright (c) 2011-2019 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 * which is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 */

package io.vertx.core.net;

import java.util.Objects;

import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonObject;

/**
 * Proxy options for a net client or a net client.
 *
 * @author <a href="http://oss.lehmann.cx/">Alexander Lehmann</a>
 */
@DataObject(generateConverter = true, publicConverter = false)
public class ProxyOptions {

    /**
     * The default proxy type (HTTP)
     */
    public static final ProxyType DEFAULT_TYPE = ProxyType.HTTP;

    /**
     * The default port for proxy connect = 3128
     *
     * 3128 is the default port for e.g. Squid
     */
    public static final int DEFAULT_PORT = 3128;

    /**
     * The default hostname for proxy connect = "localhost"
     */
    public static final String DEFAULT_HOST = "localhost";

    private String host;
    private int port;
    private String username;
    private String password;
    private ProxyType type;

    /**
     * Default constructor.
     */
    public ProxyOptions() {
        host = DEFAULT_HOST;
        port = DEFAULT_PORT;
        type = DEFAULT_TYPE;
    }

    /**
     * Copy constructor.
     *
     * @param other  the options to copy
     */
    public ProxyOptions(ProxyOptions other) {
        host = other.getHost();
        port = other.getPort();
        username = other.getUsername();
        password = other.getPassword();
        type = other.getType();
    }

    /**
     * Create options from JSON.
     *
     * @param json  the JSON
     */
    public ProxyOptions(JsonObject json) {
        this();
        ProxyOptionsConverter.fromJson(json, this);
    }

    /**
     * Convert to JSON
     *
     * @return the JSON
     */
    public JsonObject toJson() {
        JsonObject json = new JsonObject();
        ProxyOptionsConverter.toJson(this, json);
        return json;
    }

    /**
     * Get proxy host.
     *
     * @return  proxy hosts
     */
    public String getHost() {
        return host;
    }

    /**
     * Set proxy host.
     *
     * @param host the proxy host to connect to
     * @return a reference to this, so the API can be used fluently
     */
    public ProxyOptions setHost(String host) {
        Objects.requireNonNull(host, "Proxy host may not be null");
        this.host = host;
        return this;
    }

    /**
     * Get proxy port.
     *
     * @return  proxy port
     */
    public int getPort() {
        return port;
    }

    /**
     * Set proxy port.
     *
     * @param port the proxy port to connect to
     * @return a reference to this, so the API can be used fluently
     */
    public ProxyOptions setPort(int port) {
        if (port < 0 || port > 65535) {
            throw new IllegalArgumentException("Invalid proxy port " + port);
        }
        this.port = port;
        return this;
    }

    /**
     * Get proxy username.
     *
     * @return  proxy username
     */
    public String getUsername() {
        return username;
    }

    /**
     * Set proxy username.
     *
     * @param username the proxy username
     * @return a reference to this, so the API can be used fluently
     */
    public ProxyOptions setUsername(String username) {
        this.username = username;
        return this;
    }

    /**
     * Get proxy password.
     *
     * @return  proxy password
     */
    public String getPassword() {
        return password;
    }

    /**
     * Set proxy password.
     *
     * @param password the proxy password
     * @return a reference to this, so the API can be used fluently
     */
    public ProxyOptions setPassword(String password) {
        this.password = password;
        return this;
    }

    /**
     * Get proxy type.
     *
     *<p>ProxyType can be HTTP, SOCKS4 and SOCKS5
     *
     * @return  proxy type
     */
    public ProxyType getType() {
        return type;
    }

    /**
     * Set proxy type.
     *
     * <p>ProxyType can be HTTP, SOCKS4 and SOCKS5
     *
     * @param type the proxy type to connect to
     * @return a reference to this, so the API can be used fluently
     */
    public ProxyOptions setType(ProxyType type) {
        Objects.requireNonNull(type, "Proxy type may not be null");
        this.type = type;
        return this;
    }
}