Install some basic error handling in Dispatch.
[jrw.git] / src / jrw / Request.java
index abe7161..9ea621a 100644 (file)
@@ -5,11 +5,24 @@ import java.util.*;
 public class Request {
     public final Map<Object, Object> env;
     public final Map<Object, Object> resp = new HashMap<>();
+    public String status = "200 OK";
+    public Object body = null;
 
     public Request(Map<Object, Object> env) {
        this.env = env;
     }
 
+    public String method()     {return((String)env.get("REQUEST_METHOD"));}
+    public String remoteaddr() {return((String)env.get("REMOTE_ADDR"));}
+    public String serverport() {return((String)env.get("SERVER_PORT"));}
+    public String servername() {return((String)env.get("SERVER_NAME"));}
+    public String uri()        {return((String)env.get("REQUEST_URI"));}
+    public String uriname()    {return((String)env.get("SCRIPT_NAME"));}
+    public String filename()   {return((String)env.get("SCRIPT_FILENAME"));}
+    public String pathinfo()   {return((String)env.get("PATH_INFO"));}
+    public String query()      {return((String)env.get("QUERY_STRING"));}
+    public boolean https() {return(env.containsKey("HTTPS"));}
+
     public String ihead(String name, String def) {
        StringBuilder buf = new StringBuilder();
        buf.append("HTTP_");
@@ -29,7 +42,7 @@ public class Request {
     }
 
     @SuppressWarnings("unchecked")
-    public void ohead(String name, Object val, boolean repl) {
+    public Request ohead(String name, Object val, boolean repl) {
        name = "http." + name;
        if(repl) {
            resp.put(name, val);
@@ -42,9 +55,15 @@ public class Request {
            else
                resp.put(name, new ArrayList<Object>(Arrays.asList(cur, val)));
        }
+       return(this);
     }
 
+    public Request status(String status) {this.status = status; return(this);}
+    public Request body(Object body) {this.body = body; return(this);}
+
     public Map<Object, Object> response() {
+       resp.put("http.status", status);
+       resp.put("jagi.output", body);
        return(resp);
     }
 }