package com.manuelmaly.hn.server; import android.content.Context; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.CookieStore; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpUriRequest; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; public abstract class NoResponseCommand extends BaseHTTPCommand<Boolean> { public NoResponseCommand(String url, HashMap<String, String> queryParams, RequestType type, boolean notifyFinishedBroadcast, String notificationBroadcastIntentID, Context applicationContext, CookieStore cookieStore) { super(url, queryParams, type, notifyFinishedBroadcast, notificationBroadcastIntentID, applicationContext, 60000, 60000, null); setCookieStore(cookieStore); } @Override protected HttpUriRequest setRequestData(HttpUriRequest request) { request.setHeader(ACCEPT_HEADER, HTML_MIME); return request; } @Override protected ResponseHandler<Boolean> getResponseHandler(HttpClient client) { return new ResponseHandler<Boolean>() { @Override public Boolean handleResponse(HttpResponse response) throws ClientProtocolException, IOException { int statusCode = response.getStatusLine().getStatusCode(); boolean result = (statusCode >= 200 && statusCode < 400); final ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); result &= validateResponseContent(out.toString()); NoResponseCommand.this.responseHandlingFinished(result, statusCode); return null; } }; } abstract boolean validateResponseContent(String content); }