package com.gettingmobile.google.reader.rest; import com.gettingmobile.ApplicationException; import com.gettingmobile.google.Authenticator; import com.gettingmobile.google.AuthorizationException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpRequestBase; import java.net.URISyntaxException; public abstract class AuthenticatedReaderRequest<R extends HttpRequestBase, T> extends ReaderRequest<R, T> { protected final Authenticator authenticator; public AuthenticatedReaderRequest(String relativeUri, Authenticator authenticator) throws URISyntaxException { super(relativeUri); this.authenticator = authenticator; } @Override protected void initRequest(R request) { super.initRequest(request); if (authenticator != null) { request.setHeader("Authorization", "GoogleLogin auth=" + authenticator.getAuthToken()); } } @Override public void throwExceptionIfApplicable(HttpResponse response) throws ApplicationException { super.throwExceptionIfApplicable(response); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) { throw new AuthorizationException(); } } }