Twidere-App-Android-Twitter.../twidere.component.common/src/main/java/org/mariotaku/simplerestapi/http/Endpoint.java

74 lines
2.3 KiB
Java
Raw Normal View History

package org.mariotaku.simplerestapi.http;
2015-05-06 21:47:09 +02:00
import android.util.Pair;
2015-05-11 16:37:29 +02:00
import org.mariotaku.simplerestapi.RequestInfo;
import org.mariotaku.simplerestapi.Utils;
import java.util.Arrays;
import java.util.List;
/**
* Created by mariotaku on 15/2/6.
*/
public class Endpoint {
private String url;
public String getUrl() {
return url;
}
public Endpoint(String url) {
this.url = url;
}
2015-05-11 16:37:29 +02:00
public static String constructUrl(String endpoint, RequestInfo requestInfo) {
return constructUrl(endpoint, requestInfo.getPath(), requestInfo.getQueries());
}
public String construct(String path, List<Pair<String, String>> queries) {
return constructUrl(url, path, queries);
}
2015-05-06 18:15:38 +02:00
@SafeVarargs
public final String construct(String path, Pair<String, String>... queries) {
return constructUrl(url, path, Arrays.asList(queries));
}
public static String constructUrl(String endpoint, String path, List<Pair<String, String>> queries) {
2015-05-13 08:45:52 +02:00
if (endpoint == null) throw new NullPointerException("Endpoint is null");
final StringBuilder urlBuilder = new StringBuilder();
if (endpoint.charAt(endpoint.length() - 1) == '/') {
urlBuilder.append(endpoint.substring(0, endpoint.length() - 1));
} else {
urlBuilder.append(endpoint);
}
if (path != null) {
if (path.charAt(0) != '/') {
urlBuilder.append('/');
}
urlBuilder.append(path);
}
return constructUrl(urlBuilder.toString(), queries);
}
public static String constructUrl(String url, List<Pair<String, String>> queries) {
if (queries == null || queries.isEmpty()) return url;
final StringBuilder urlBuilder = new StringBuilder(url);
for (int i = 0, j = queries.size(); i < j; i++) {
2015-05-06 18:15:38 +02:00
final Pair<String, String> item = queries.get(i);
urlBuilder.append(i != 0 ? '&' : '?');
2015-05-06 21:47:09 +02:00
urlBuilder.append(Utils.encode(item.first, "UTF-8"));
urlBuilder.append('=');
2015-05-06 21:47:09 +02:00
urlBuilder.append(Utils.encode(item.second, "UTF-8"));
}
return urlBuilder.toString();
}
2015-05-06 18:15:38 +02:00
@SafeVarargs
public static String constructUrl(String url, Pair<String, String>... queries) {
return constructUrl(url, Arrays.asList(queries));
}
}