namespace edu.neu.ccs.demeterf.http{
using edu.neu.ccs.demeterf.http.server;
using edu.neu.ccs.demeterf.http.classes;
using edu.neu.ccs.demeterf.lib;
using System;
/** Test Server response class */
[Server]
public class Test{
[Port]
readonly int PORT = 9000;
[Path("/html")]
public HTTPResp htmlResp(HTTPReq req)
{ return HTTPResp.htmlResponse("\n"+
"
Sample Page\n"+
"HELLO There"); }
[Path("/text")]
public HTTPResp textResp(HTTPReq req)
{ return HTTPResp.textResponse("Plain Text Response"); }
[Path("/urlargs")]
public HTTPResp urlResp(HTTPReq req)
{ return mapToHTML(req.urlArgs()); }
[Path("/headers")]
public HTTPResp headerResp(HTTPReq req)
{ return mapToHTML(req.getHeaders()); }
[Path()] // DEFAULT
public HTTPResp defaultResp(HTTPReq req){
return HTTPResp.error("ERROR: Unknown Request");
}
class Folder : List>.Fold{
public override String fold(Entry e, String r){
return ""+e.GetKey()+" : "+e.GetVal()+"
"+r;
}
}
HTTPResp mapToHTML(Map m){
return HTTPResp.htmlResponse(""+ m.toList().fold(new Folder(),""));
}
static void p(String s){ Console.WriteLine(s); }
public static void Main(String[] args) {
p("Starting Server\n");
Factory.setVerbose(true);
ServerThread server = Factory.create(new Test());
p("Hit enter to shutdown");
Console.ReadLine();
server.shutdown();
}
}
}