package page.tools.stats;

import java.io.IOException;
import java.io.OutputStreamWriter;

import org.wikiwebserver.core.WareHouse;
import org.wikiwebserver.core.interfaces.CSVStyler;
import org.wikiwebserver.handler.http.*;
import org.wikiwebserver.handler.http.interfaces.HTTPResponder;

import static org.wikiwebserver.html.HTMLHelper.*;

public class LiveLog implements HTTPResponder {
	
    public Object respond(HTTPHandler conn) throws IOException {
    	
    	String logName = null;
    	FormData formData = conn.getRequest().getFormData();
    	if (formData != null) {
    		logName = formData.getFirst("logName");
    	}
    	// Default
    	if (logName == null) logName = "requests";
    	

    	
        conn.getResponse().getHeaders().set("Content-Type", "text/html");
        conn.getResponse().getHeaders().set("Content-Encoding", "none");         
        
        StringBuilder bill = new StringBuilder();
        bill.append("<html><head>");
        bill.append("<link rel='stylesheet' type='text/css' href='/templates/default/stats/request.css'>");
        bill.append("<base target='_parent'>"); 



    	CSVStyler styler = null;    	
    	if (logName.equals("requests")) {
    		styler = new LiveLogRequestStyler();
    	}
    	else {
    		// Keep view at bottom
            bill.append(javaScript("function drop() { " +
					   "  window.scrollBy(0, 100);" +
					   "  setTimeout('drop();', 10); " +
					   "} " +
					   "drop();"));
    	}
    	
        bill.append("</head><body>");     	
        conn.getOutputStream().write(bill.toString().getBytes("utf8"));
        

        
        WareHouse.tailLog(logName, styler, new OutputStreamWriter(conn.getOutputStream(), "utf8"));
        
        return null;
    }   
}
