package com.google.sitebricks.client;
import com.google.inject.ImplementedBy;
import com.google.inject.TypeLiteral;
import java.util.Map;
/**
* @author Dhanji R. Prasanna (dhanji@gmail.com)
*/
@ImplementedBy(CommonsWeb.class)
public interface Web {
enum Auth {
BASIC, DIGEST
}
FormatBuilder clientOf(String url);
FormatBuilder clientOf(String url, Map<String, String> headers);
static interface FormatBuilder {
<T> ReadAsBuilder<T> transports(Class<T> clazz);
<T> ReadAsBuilder<T> transports(TypeLiteral<T> clazz);
<T> WebClient<T> transportsText();
FormatBuilder auth(Auth auth, String username, String password);
FormatBuilder auth(Auth auth, String username, String password, boolean usePreemptiveAuth);
}
static interface ReadAsBuilder<T> {
WebClient<T> over(Class<? extends Transport> clazz);
}
}