package de.fun2code.android.piratebox.handler;
import java.io.IOException;
import java.util.Locale;
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;
/**
* Allow Droopy like file uploads on port 8080
*
* @author joschi
*
*/
public class DroopyHandler implements Handler {
private String prefix;
private SharedPreferences preferences;
private String fupURL;
private static final String FUP_URL = "fup";
private static final String FUP_URL_DEFAULT= "/fup.xhtml";
@Override
public boolean init(Server server, String prefix) {
this.prefix = prefix;
fupURL = server.props.getProperty(prefix + FUP_URL, FUP_URL_DEFAULT);
preferences = PreferenceManager.getDefaultSharedPreferences(PirateBoxService.getService());
return true;
}
@Override
public boolean respond(Request request) throws IOException {
String contentType = request.headers.get("Content-Type");
/*
* Check if URL is base URL (empty or "/")
* Only handle these URLs.
*/
boolean isBaseUrl = request.url.matches("^[/]{0,1}$");
if(contentType != null && preferences.getBoolean(Constants.PREF_EMULATE_DROOPY, true)
&& contentType.toLowerCase(Locale.US).contains("multipart") &&
isBaseUrl) {
/*
* Rewrite current and original url.
*/
request.url = fupURL;
request.props.setProperty("url.orig", fupURL);
}
// always return false
return false;
}
}