
// // Copyright (c) 2006, Brian Frank and Andy Frank // Licensed under the Academic Free License version 3.0 // // History: // 21 Mar 06 Andy Frank Creation // ** ** Weblet services a web request. ** ** See [docLib::Web]`docLib::Web#weblet` ** abstract class Weblet { ////////////////////////////////////////////////////////////////////////// // Constructor ////////////////////////////////////////////////////////////////////////// ** ** Default constructor. ** new make() { req = (WebReq)Thread.locals["web.req"] res = (WebRes)Thread.locals["web.res"] } ////////////////////////////////////////////////////////////////////////// // Request/Response ////////////////////////////////////////////////////////////////////////// ** ** The WebReq instance for this request. ** @transient readonly WebReq req ** ** The WebRes instance for this request. ** @transient readonly WebRes res ////////////////////////////////////////////////////////////////////////// // Service Methods ////////////////////////////////////////////////////////////////////////// ** ** Service a web request. The default implementation of this ** method calls the method that matches WebReq.method. ** virtual Void service() { if (req.method == "GET") doGet else if (req.method == "HEAD") doHead else if (req.method == "POST") doPost else if (req.method == "PUT") doPut else if (req.method == "DELETE") doDelete else if (req.method == "OPTIONS") doOptions else if (req.method == "TRACE") doTrace else throw UnsupportedErr.make("Unsupported method \"$req.method\".") } ** ** Convenience method to respond to a GET request. ** Default implementation returns a 501 Not implemented error. ** virtual Void doGet() { res.sendError(501) } ** ** Convenience method to respond to a HEAD request. ** Default implementation returns a 501 Not implemented error. ** // TODO - make work like servlets virtual Void doHead() { res.sendError(501) } ** ** Convenience method to respond to a POST request. ** Default implementation returns a 501 Not implemented error. ** virtual Void doPost() { res.sendError(501) } ** ** Convenience method to respond to a PUT request. ** Default implementation returns a 501 Not implemented error. ** virtual Void doPut() { res.sendError(501) } ** ** Convenience method to respond to a DELETE request. ** Default implementation returns a 501 Not implemented error. ** virtual Void doDelete() { res.sendError(501) } ** ** Convenience method to respond to a OPTIONS request. ** Default implementation returns a 501 Not implemented error. ** virtual Void doOptions() { res.sendError(501) } ** ** Convenience method to respond to a TRACE request. ** Default implementation returns a 501 Not implemented error. ** virtual Void doTrace() { res.sendError(501) } }