diff --git a/src/main/java/com/inteligr8/github/http/PreemptiveAuthInterceptor.java b/src/main/java/com/inteligr8/github/http/PreemptiveAuthInterceptor.java index d48ddb3..de23015 100644 --- a/src/main/java/com/inteligr8/github/http/PreemptiveAuthInterceptor.java +++ b/src/main/java/com/inteligr8/github/http/PreemptiveAuthInterceptor.java @@ -15,8 +15,24 @@ import org.apache.http.impl.auth.BasicScheme; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpCoreContext; +/** + * This class allows the developer to force the sending of credentials on the + * first HTTP request. Without this interceptor, all requests will first try + * without credentials. + * + * A subsequent retry will happen only under certain HTTP status codes. Some + * services will return a 404 instead of an expected 401 or 403. This is for + * security reasons. As a side effect, it fools the Apache HTTP client into + * thinking that the resource does not exist, even if it were authorized. So + * it will not retry it with credentials. + * + * @author brian@inteligr8.com + */ public class PreemptiveAuthInterceptor implements HttpRequestInterceptor { + /** + * @see HttpRequestInterceptor#process(HttpRequest, HttpContext) + */ public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { AuthState authState = (AuthState) context.getAttribute(HttpClientContext.TARGET_AUTH_STATE);