package com.manuelmaly.hn.server;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import java.io.IOException;
/**
* Handles HTML response of a request to login to HN and retrieving its user token.
* @author manuelmaly
*/
public class GetHNUserTokenResponseHandler implements ResponseHandler<String> {
private IAPICommand<String> mCommand;
public GetHNUserTokenResponseHandler(IAPICommand<String> command, HttpClient client) {
mCommand = command;
}
@Override
public String handleResponse(HttpResponse response)
throws ClientProtocolException, IOException {
String responseString = null;
String redirectToLocation = null;
Header[] headers = response.getHeaders("Location");
if (headers.length > 0) {
HeaderElement[] headerElements = headers[0].getElements();
if (headerElements.length > 0) {
redirectToLocation = headerElements[0].getName();
}
}
if (redirectToLocation != null && redirectToLocation.equals("news")) {
responseString = getUserID(response);
}
mCommand.responseHandlingFinished(responseString, response.getStatusLine().getStatusCode());
return responseString;
}
private String getUserID(HttpResponse response) {
for (Header header : response.getHeaders("Set-Cookie")) {
HeaderElement[] elements = header.getElements();
if (elements.length > 0 && elements[0].getName().equals("user")) {
return elements[0].getValue();
}
}
return null;
}
}