package org.ovirt.engine.core.uutils.net;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class URLBuilder {
String base;
String suffix;
List<String> parameters = new ArrayList<>();
public URLBuilder(URL url) {
this(url, null);
}
public URLBuilder(URL url, String suffix) {
this(url.toString(), suffix);
}
public URLBuilder(String base) {
this(base, null);
}
public URLBuilder(String base, String suffix) {
this.base = base;
this.suffix = suffix;
}
public URLBuilder setSuffix(String suffix) {
this.suffix = suffix;
return this;
}
public URLBuilder addParameter(String name, String value) {
try {
parameters.add(
URLEncoder.encode(name, "UTF-8") +
"=" +
URLEncoder.encode(value, "UTF-8")
);
return this;
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
public String build() throws MalformedURLException {
StringBuilder ret = new StringBuilder();
ret.append(base);
if (suffix != null) {
ret.append(suffix);
}
boolean addAmp = false;
if (!parameters.isEmpty()) {
String query = new URL(ret.toString()).getQuery();
if (query == null) {
ret.append('?');
} else if (!query.isEmpty()) {
addAmp = true;
}
}
for (String parameter : parameters) {
if (addAmp) {
ret.append('&');
}
addAmp = true;
ret.append(parameter);
}
return ret.toString();
}
public URL buildURL() throws MalformedURLException {
return new URL(build());
}
}