
com.gihub.gkutiel.Url Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fbi Show documentation
Show all versions of fbi Show documentation
Java API for Facebook apps
package com.gihub.gkutiel;
import static java.net.URLEncoder.encode;
import static java.util.Arrays.asList;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public abstract class Url {
@SuppressWarnings("unchecked")
private static List getFields(final Class extends Url> c) {
if (c.equals(Url.class)) return new ArrayList<>();
final List fields = getFields((Class extends Url>) c.getSuperclass());
fields.addAll(asList(c.getDeclaredFields()));
return fields;
}
public final String base;
public Url(final String base) {
this.base = base;
}
private void addParam(final StringBuilder url, final Field field) {
try {
url.append(encode(field.getName(), "utf-8") + "=" + encode(field.get(this).toString(), "utf-8"));
} catch (IllegalArgumentException | IllegalAccessException | UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
private void addParams(final StringBuilder url, final Field[] fs) {
if (fs.length == 0) return;
AccessibleObject.setAccessible(fs, true);
url.append("?");
addParam(url, fs[0]);
for (int i = 1; i < fs.length; i++) {
url.append("&");
addParam(url, fs[i]);
}
}
public String asString() {
final StringBuilder url = new StringBuilder(base);
addParams(url, getFields(getClass()).toArray(new Field[] {}));
return url.toString();
}
@Override
public String toString() {
return asString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy