package com.mcxiaoke.next.http;
import com.mcxiaoke.next.http.callback.FileCallback;
import com.mcxiaoke.next.http.callback.GsonCallback;
import com.mcxiaoke.next.http.callback.ResponseCallback;
import com.mcxiaoke.next.http.callback.StringCallback;
import java.io.File;
import java.util.Collections;
import java.util.Map;
/**
* User: mcxiaoke
* Date: 16/1/11
* Time: 11:42
*/
public final class HttpAsync {
private HttpAsync() {
throw new RuntimeException("Can't create new instance");
}
private static HttpQueue sHttpQueue = null;
public static void setHttpQueue(final HttpQueue httpQueue) {
sHttpQueue = httpQueue;
}
private synchronized static HttpQueue getHttpQueue() {
if (sHttpQueue == null) {
sHttpQueue = HttpQueue.getDefault();
}
return sHttpQueue;
}
private static Map<String, String> emptyMap() {
return Collections.emptyMap();
}
public static String head(final String url, final ResponseCallback callback,
Object caller) {
return head(url, emptyMap(), callback, caller);
}
public static String head(final String url, final Map<String, String> queries,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.HEAD, url, queries, null, callback, caller);
}
public static String head(final String url, final NextParams params,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.HEAD, url, params, callback, caller);
}
public static String get(final String url, final ResponseCallback callback,
Object caller) {
return get(url, emptyMap(), callback, caller);
}
public static String get(final String url, final Map<String, String> queries,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.GET, url, queries, null, callback, caller);
}
public static String get(final String url, final NextParams params,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.GET, url, params, callback, caller);
}
public static String get(final String url, final StringCallback callback,
Object caller) {
return get(url, emptyMap(), callback, caller);
}
public static String get(final String url, final Map<String, String> queries,
final StringCallback callback,
Object caller) {
return add(HttpMethod.GET, url, queries, null, callback, caller);
}
public static String get(final String url, final NextParams params,
final StringCallback callback,
Object caller) {
return add(HttpMethod.GET, url, params, callback, caller);
}
public static <T> String get(final String url,
final GsonCallback<T> callback,
Object caller) {
return get(url, emptyMap(), callback, caller);
}
public static <T> String get(final String url, final Map<String, String> queries,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.GET, url, queries, null, callback, caller);
}
public static <T> String get(final String url, final NextParams params,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.GET, url, params, callback, caller);
}
public static String delete(final String url, final ResponseCallback callback,
Object caller) {
return delete(url, emptyMap(), callback, caller);
}
public static String delete(final String url, final Map<String, String> queries,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.DELETE, url, queries, null, callback, caller);
}
public static String delete(final String url, final NextParams params,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.DELETE, url, params, callback, caller);
}
public static String delete(final String url, final StringCallback callback,
Object caller) {
return delete(url, emptyMap(), callback, caller);
}
public static String delete(final String url, final Map<String, String> queries,
final StringCallback callback,
Object caller) {
return add(HttpMethod.DELETE, url, queries, null, callback, caller);
}
public static String delete(final String url, final NextParams params,
final StringCallback callback,
Object caller) {
return add(HttpMethod.DELETE, url, params, callback, caller);
}
public static <T> String delete(final String url,
final GsonCallback<T> callback,
Object caller) {
return delete(url, emptyMap(), callback, caller);
}
public static <T> String delete(final String url,
final Map<String, String> queries,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.DELETE, url, queries, null, callback, caller);
}
public static <T> String delete(final String url,
final NextParams params,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.DELETE, url, params, callback, caller);
}
public static String post(final String url,
final ResponseCallback callback,
Object caller) {
return post(url, emptyMap(), callback, caller);
}
public static String post(final String url,
final Map<String, String> forms,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.POST, url, null, forms, callback, caller);
}
public static String post(final String url, final NextParams params,
final StringCallback callback,
Object caller) {
return add(HttpMethod.POST, url, params, callback, caller);
}
public static String post(final String url,
final StringCallback callback,
Object caller) {
return post(url, emptyMap(), callback, caller);
}
public static String post(final String url,
final Map<String, String> forms,
final StringCallback callback,
Object caller) {
return add(HttpMethod.POST, url, null, forms, callback, caller);
}
public static String post(final String url, final NextParams params,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.POST, url, params, callback, caller);
}
public static <T> String post(final String url,
final GsonCallback<T> callback,
Object caller) {
return post(url, emptyMap(), callback, caller);
}
public static <T> String post(final String url, final Map<String, String> forms,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.POST, url, null, forms, callback, caller);
}
public static <T> String post(final String url, final NextParams params,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.POST, url, params, callback, caller);
}
public static String put(final String url, final ResponseCallback callback,
Object caller) {
return put(url, emptyMap(), callback, caller);
}
public static String put(final String url, final Map<String, String> forms,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.PUT, url, null, forms, callback, caller);
}
public static String put(final String url, final NextParams params,
final ResponseCallback callback,
Object caller) {
return add(HttpMethod.PUT, url, params, callback, caller);
}
public static String put(final String url, final StringCallback callback,
Object caller) {
return put(url, emptyMap(), callback, caller);
}
public static String put(final String url, final Map<String, String> forms,
final StringCallback callback,
Object caller) {
return add(HttpMethod.PUT, url, null, forms, callback, caller);
}
public static String put(final String url, final NextParams params,
final StringCallback callback,
Object caller) {
return add(HttpMethod.PUT, url, params, callback, caller);
}
public static <T> String put(final String url, final GsonCallback<T> callback,
Object caller) {
return put(url, emptyMap(), callback, caller);
}
public static <T> String put(final String url, final Map<String, String> forms,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.PUT, url, null, forms, callback, caller);
}
public static <T> String put(final String url, final NextParams params,
final GsonCallback<T> callback,
Object caller) {
return add(HttpMethod.PUT, url, params, callback, caller);
}
public static String download(final String url, final File file, final FileCallback callback,
Object caller) {
return download(url, file, emptyMap(), callback, caller);
}
public static String download(final String url, final File file, final Map<String, String> queries,
final FileCallback callback,
Object caller) {
final NextRequest request = new NextRequest(HttpMethod.GET, url).queries(queries);
return getHttpQueue().add(request, file, callback, caller);
}
public static String download(final String url, final File file, final NextParams params,
final FileCallback callback,
Object caller) {
final NextRequest request = new NextRequest(HttpMethod.GET, url, params);
return getHttpQueue().add(request, file, callback, caller);
}
private static String add(final HttpMethod method,
final String url,
final NextParams params,
final ResponseCallback callback,
Object caller) {
final NextRequest request = new NextRequest(method, url).params(params);
return getHttpQueue().add(request, callback, caller);
}
private static String add(final HttpMethod method,
final String url,
final NextParams params,
final StringCallback callback,
Object caller) {
final NextRequest request = new NextRequest(method, url).params(params);
return getHttpQueue().add(request, callback, caller);
}
private static <T> String add(final HttpMethod method,
final String url,
final NextParams params,
final GsonCallback<T> callback,
Object caller) {
final NextRequest request = new NextRequest(method, url).params(params);
return getHttpQueue().add(request, callback, caller);
}
private static String add(final HttpMethod method, final String url,
final Map<String, String> queries,
final Map<String, String> forms,
final ResponseCallback callback,
Object caller) {
return add(method, url, queries, forms, null, callback, caller);
}
private static String add(final HttpMethod method, final String url,
final Map<String, String> queries,
final Map<String, String> forms,
final StringCallback callback,
Object caller) {
return add(method, url, queries, forms, null, callback, caller);
}
private static <T> String add(final HttpMethod method, final String url,
final Map<String, String> queries,
final Map<String, String> forms,
final GsonCallback<T> callback,
Object caller) {
return add(method, url, queries, forms, null, callback, caller);
}
private static String add(final HttpMethod method, final String url,
final Map<String, String> queries,
final Map<String, String> forms,
final Map<String, String> headers,
final ResponseCallback callback,
Object caller) {
final NextRequest request = new NextRequest(method, url).queries(queries).
forms(forms).headers(headers);
return getHttpQueue().add(request, callback, caller);
}
private static String add(final HttpMethod method, final String url,
final Map<String, String> queries,
final Map<String, String> forms,
final Map<String, String> headers,
final StringCallback callback,
Object caller) {
final NextRequest request = new NextRequest(method, url).queries(queries).
forms(forms).headers(headers);
return getHttpQueue().add(request, callback, caller);
}
private static <T> String add(final HttpMethod method, final String url,
final Map<String, String> queries,
final Map<String, String> forms,
final Map<String, String> headers,
final GsonCallback<T> callback,
Object caller) {
final NextRequest request = new NextRequest(method, url).queries(queries).
forms(forms).headers(headers);
return getHttpQueue().add(request, callback, caller);
}
}