package page.example;

import org.wikiwebserver.core.WareHouse;
import org.wikiwebserver.handler.http.FormData;
import org.wikiwebserver.handler.http.HTTPException;
import org.wikiwebserver.handler.http.interfaces.HTTPResponder;
import page.config.SiteTemplatedPage;

import page.tools.entity.Browser;

import static org.wikiwebserver.html.HTMLHelper.*;

public class SiteScraperPage extends SiteTemplatedPage implements HTTPResponder {
	
    public void generate() throws HTTPException {
        
        setTitle("Site Scraper - WikiWebServer.org");

        Browser b = getUser();
        if (b == null) b = getBrowser();
        
        String url = (String) b.get("url", "SiteScraper");
        String re = (String) b.get("re", "SiteScraper");

        FormData formData = getFormData();
        if (formData != null) {
            url = formData.getFirst("url");
            re = formData.getFirst("re");

            b.put("url", url, "SiteScraper");
            b.put("re", re, "SiteScraper");
        }
        

        if (url == null) url = "http://news.bbc.co.uk/text_only.stm";
        if (re == null) re = "<a name=\"startcontent\">(.*)<br clear=\"all\" />";

        append(h(1, "Site Scraper") +
               form(
                   h(2, "Source URL") +                        
                   textfield("url", url, "size='64'") +
                   h(2, "Regular Expression Pattern") +
                   textfield("re", re, "size='64'") + br() +
                   submitbutton("action", "Scrape")
               ) +
               h(1, "Result")
        );
        
        String scraperUrl = getServiceAddress() +
                            WareHouse.getUrlPathForClass(SiteScraper.class) +
                            "?url=" + WareHouse.formDataEncode(url) +
                            "&re=" + WareHouse.formDataEncode(re);
        
        append("<iframe src='" + scraperUrl + "' frameborder='0'" +
        	   " width='100%' height='400'></iframe>");
        
        append(p("Automatic: " + a(scraperUrl)));
    } 
}
