/*
* 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;
}
}
}