Java tutorial
/* * Copyright 2014 Loic Merckel * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package io.uploader.drive.config.proxy; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; public class Proxy implements HasProxySettings { private final String host; private final int port; private final String username; private final String password; private final String prot; private final boolean activated; @Override public String getHost() { return host; } @Override public int getPort() { return port; } @Override public String getUsername() { return username; } @Override public String getPassword() { return password; } @Override public boolean isActive() { return activated; } @Override public String getProtocol() { return prot; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((host == null) ? 0 : host.hashCode()); result = prime * result + port; result = prime * result + ((prot == null) ? 0 : prot.hashCode()); result = prime * result + ((username == null) ? 0 : username.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Proxy other = (Proxy) obj; if (host == null) { if (other.host != null) return false; } else if (!host.equals(other.host)) return false; if (port != other.port) return false; if (prot == null) { if (other.prot != null) return false; } else if (!prot.equals(other.prot)) return false; if (username == null) { if (other.username != null) return false; } else if (!username.equals(other.username)) return false; return true; } public String toString() { return prot + ":\\" + host + ":" + port; } private Proxy(Builder b) { super(); this.username = b.username; this.host = b.host; this.port = b.port; this.password = b.password; this.activated = b.activated; this.prot = b.prot; } public static class Builder { private String host; private int port; private String username; private String password; private final String prot; boolean activated; public Builder(String prot) { super(); this.prot = prot; } public Builder setHost(String str) { host = str; return this; } public Builder setUsername(String str) { username = str; return this; } public Builder setPassword(String str) { password = str; return this; } public Builder setPort(int p) { port = p; return this; } public Builder setActivated(boolean b) { activated = b; return this; } public Proxy build() { return new Proxy(this); } } @Override public CredentialsProvider getCredentialsProvider() { if (isActive()) { CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope(getHost(), getPort()), new UsernamePasswordCredentials(getUsername(), getPassword())); return credsProvider; } else { return null; } } }