114 static string add(Program p,
string fn,
string name,
string src);
119 static string getCode(
bool bare_refs,
string fmt);
126 static bool doBlock(
string end, reference src,
string type, reference i, reference l);
193 private setupTemplateIntern(
date mtime);
301 string add(
string name,
string src, *
string ct);
391 "IndexFile":
"index.html",
392 "IndexTemplate":
"index.qhtml",
393 "TemplateExtensions": (
402 " $d.chdir($ctx.path);"
403 " string $title = sprintf(\"Index of /%s\", $ctx.resource_path);"
406 " <meta charset=\"utf-8\" />"
407 " <title>{{ $title }}</title>"
411 " <h1>{{ $title }}</h1>"
413 " <div class=\"container\">"
417 " <th width=\"40\">Type</th>"
418 " <th width=\"80\">Size</th>"
420 " {% if ($ctx.parent_url) { %}"
422 " <td colspan=\"2\"><a href=\"{{ $ctx.parent_url }}\">Parent Directory</a></td>"
425 " {% foreach string $dir in (sort($d.listDirs())) { %}"
426 " {% if ($dir[0]!=\".\") {"
427 " string $path = replace($ctx.path, $ctx.file_root, \"\");"
429 " <tr><td><a href=\"{{ $ctx.url_root + $path + \"/\" + $dir }}\">{{ $dir }}</a></td><td width=\"40\">Directory</td></tr>"
432 " {% foreach string $file in (sort($d.listFiles())) { %}"
433 " {% if ($file[0]!=\".\") {"
434 " string $path = replace($ctx.path, $ctx.file_root, \"\");"
436 " <tr><td><a href=\"{{ $ctx.url_root + $path + \"/\" + $file }}\">{{ $file }}</a></td><td width=\"40\">File</td><td align=\"right\">{{hstat($ctx.path + \"/\" + $file).size }}</td></tr>"
465 private string getDirlistingTemplate();
531 private *
hash tryServeRequest(
hash cx);
const Dirlisting
dirlisting template
Definition: WebUtil.qm.dox.h:399
logInfo(string fmt)
default implementation is empty; this method is called with informational log messages; reimplement i...
bool hasTemplate(string tname)
returns True if the given template exists, False if not
softint error_level
set for error info level
Definition: WebUtil.qm.dox.h:380
*date mtime
file's modification time
Definition: WebUtil.qm.dox.h:158
manages a template resource that may need to be recompiled if the file is updated in the filesystem; ...
Definition: WebUtil.qm.dox.h:135
hash th
hash for template storage
Definition: WebUtil.qm.dox.h:209
constructor(string path, int po=DefaultProgramOptions, *code psetup)
creates the object based on the pathname and Program options
*code psetup
code to perform Program initialization when creating a new Program object (inport API...
Definition: WebUtil.qm.dox.h:152
private hash unhandledRequest(hash cx, hash hdr, *data body)
this method returns a 404 "Not Found" error code to GET requests and a 501 "Not Implemented" error co...
string ct
the content type of the rendered template
Definition: WebUtil.qm.dox.h:146
string add(string name, string src, *string ct)
adds a template to the object
private hash serverError(hash cx, hash ex)
this method returns a 500 "Internal Server Error" error code when an exception occurs ...
int po
parse options used on the program
Definition: WebUtil.qm.dox.h:140
private *hash handleRequestImpl(reference cx, hash hdr, *data body)
this method is called by this class's handleRequest() before trying to service the request automatica...
this is the base class for all template Program container classes
Definition: WebUtil.qm.dox.h:68
this class manages templates based on files
Definition: WebUtil.qm.dox.h:201
*hash tryRender(string tname, hash ctx, int code=200, *hash hdr)
explicitly renders the given template with the given argument context hash if the template exists; if...
static string getContentType(string name)
returns the content type from the file name, ignores any leading "q" in the extensions, assuming a template
const TemplateFunc
the name of the template function
Definition: WebUtil.qm.dox.h:149
const Defaults
default configuration values
Definition: WebUtil.qm.dox.h:389
static string add(Program p, string fn, string name, string src)
adds a template function to a template Program object
private hash fileError(hash cx, hash sh)
this method returns a 400 "Bad Request" error code when a file should be served that's not a regular ...
*string default_target
the default target if a URL cannot be satisfied
Definition: WebUtil.qm.dox.h:372
hash handleRequest(HttpListener listener, Socket s, hash cx, hash hdr, *data body)
this method calls handleRequestImpl() to service the request, if handleRequestImpl() returns NOTHING...
const PO_NO_INHERIT_GLOBAL_VARS
constructor(int po=DefaultProgramOptions)
sets up the object
hash render(string tname, string path, date mtime, hash ctx, int code=200, *hash hdr)
explicitly renders the given template with the given path and context argument
RWLock rwl()
to ensure atomicity regarding contention between setup/recompiles and rendering requests ...
this class serves files from the file system based on a root location
Definition: WebUtil.qm.dox.h:358
*code psetup
code to perform Program initialization when creating a new Program object (inport API...
Definition: WebUtil.qm.dox.h:215
static string getCode(bool bare_refs, string fmt)
a helper method that strips dollar signs from code when PO_ALLOW_BARE_REFS is set in the template pro...
hash template_extensions
file extensions handled as templates
Definition: WebUtil.qm.dox.h:369
int po
parse options used on the program
Definition: WebUtil.qm.dox.h:212
list getTemplateList()
returns a list of template names, an empty list is returned if there are no templates ...
softlist indexes
indexes for directories; handled in order of appearance
Definition: WebUtil.qm.dox.h:366
A container for holding static text templates (ie that do not change once created in the template man...
Definition: WebUtil.qm.dox.h:259
constructor(int po=DefaultProgramOptions)
sets up the object
const PO_NO_INHERIT_USER_FUNC_VARIANTS
*hash getTemplateHash()
returns a hash of template names, values are True or NOTHING if no templates are currently cached ...
logError(string fmt)
default implementation is empty; this method is called with error log messages; reimplement in subcla...
*hash renderDirectory(hash cx, string path)
this method is called when a directory should be rendered
string path
the path to the template
Definition: WebUtil.qm.dox.h:143
purge(string tname)
this method can be called when a resource is requested that no longer exists in case a template is st...
Sequence seq()
Sequence for template function names.
StaticTemplateManager stm()
static templates
const DirSep
directory separator character
Definition: WebUtil.qm.dox.h:386
string file_root
root directory for serving files
Definition: WebUtil.qm.dox.h:363
const Unix
flag for UNIX operating systems
Definition: WebUtil.qm.dox.h:383
Program p
Holds the template generation function.
Definition: WebUtil.qm.dox.h:73
const DefaultProgramOptions
default parse options for template Programs
Definition: WebUtil.qm.dox.h:79
const PO_NO_TOP_LEVEL_STATEMENTS
constructor(int po=TextTemplateBase::DefaultProgramOptions, *code psetup)
creates the object with optional Program options
hash render(date mtime, hash ctx, int code=200, *hash hdr)
explicitly renders the given template with the given argument
static bool doBlock(string end, reference src, string type, reference i, reference l)
a helper method used in parsing
hash render(string tname, hash ctx, int code=200, *hash hdr)
explicitly renders the given template with the given argument
logDebug(string fmt)
default implementation is empty; this method is called with debug log messages; reimplement in subcla...
hash th
Maps template names to function names.
Definition: WebUtil.qm.dox.h:264
RWLock rwl()
read-write lock for managing template access
constructor(string file_root, string url_root="/", *hash opt)
create the object optionally with the given AbstractAuthenticator
the WebUtil namespace contains all the objects in the WebUtil module
Definition: WebUtil.qm.dox.h:66