package de.fun2code.android.piratebox.handler;
import java.io.IOException;
import de.fun2code.android.piratebox.Constants;
import de.fun2code.android.piratebox.PirateBoxService;
import sunlabs.brazil.server.Handler;
import sunlabs.brazil.server.Request;
import sunlabs.brazil.server.Server;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
/**
* iOS sends a WISPr request to check if connected to the internet.
* This handler answers those request.
*
* A request looks like this:
*
* GET /library/test/success.html HTTP/1.
* Host: www.apple.com
* User-Agent: CaptiveNetworkSupport/1.0 wisp
* Connection: close
*
* @author joschi
*
*/
public class IosWisprHandler implements Handler {
private String prefix;
private String userAgentRegExp = ".*CaptiveNetworkSupport.*";
private String html = "<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 3.2//EN”>\n<HTML>\n"+
"<HEAD>\n<TITLE>Success</TITLE>\n</HEAD>\n<BODY>\nSuccess\n</BODY>\n</HTML>";
private SharedPreferences preferences;
@Override
public boolean init(Server server, String prefix) {
this.prefix = prefix;
preferences = PreferenceManager.getDefaultSharedPreferences(PirateBoxService.getService());
return true;
}
@Override
public boolean respond(Request request) throws IOException {
String ua = request.headers.get("User-Agent");
if(preferences.getBoolean(Constants.PREF_IOS_WISPR_SUPPORT, true) && ua.matches(userAgentRegExp)) {
request.sendResponse(html, "text/html");
return true;
}
return false;
}
}