182class AbstractTemplate {
203 hash<HttpResponseInfo> render(date new_mtime, hash<auto> ctx,
int http_code = 200, *hash<auto> hdr);
221 abstract hash<HttpResponseInfo> renderImpl(date new_mtime, hash<auto> ctx,
int http_code = 200, *hash<auto> hdr);
264 static string getCode(
bool bare_refs,
string fmt, ...);
270 static bool doBlock(
string end, reference<string> src,
string type, reference<int> i, reference<list<hash>> l);
351 hash<HttpResponseInfo>
renderImpl(date new_mtime, hash<auto> ctx,
int http_code = 200, *hash<auto> hdr);
356 setupTemplateIntern(date new_mtime);
373 hash<string, AbstractTemplate>
th;
409 hash<HttpResponseInfo>
render(
string tname,
string path, date mtime, hash<auto> ctx,
int code = 200, *hash<auto> hdr);
428 hash<string, TextTemplateBase>
toh;
431 hash<string, hash<auto>>
th;
471 string add(
string name,
string src, *
string ct);
496 hash<HttpResponseInfo>
render(
string tname, hash<auto> ctx,
int code = 200, *hash<auto> hdr);
515 *hash<HttpResponseInfo>
tryRender(
string tname, hash<auto> ctx,
int code = 200, *hash<auto> hdr);
562 const Unix = (PlatformOS !=
"Windows");
608 string getDirlistingTemplate();
683 *hash<HttpResponseInfo>
authenticateRequest(HttpListenerInterface listener, hash<auto> hdr, reference<hash<auto>> cx);
710 hash<HttpResponseInfo>
fileError(hash<auto> cx, hash<auto> sh);
734 *hash<StatInfo> statPath(hash<auto> cx, hash<auto> hdr, reference<string> path);
810 *hash<HttpResponseInfo>
handleRequestImpl(reference<hash<auto>> cx, hash<auto> hdr, *data body);
AbstractHttpRequestHandler handler
HttpListenerInterface listener
this class serves files from the file system based on a root location
Definition WebUtil.qm.dox.h:532
softint error_level
set for error info level
Definition WebUtil.qm.dox.h:559
hash< HttpResponseInfo > fileError(hash< auto > cx, hash< auto > sh)
this method returns a 400 "Bad Request" error code when a file should be served that's not a regular ...
logInfo(string fmt,...)
default implementation is empty; this method is called with informational log messages; reimplement i...
hash< HttpResponseInfo > serverError(hash< auto > cx, hash< auto > ex)
this method returns a 500 "Internal Server Error" error code when an exception occurs
logDebug(string fmt,...)
default implementation is empty; this method is called with debug log messages; reimplement in subcla...
hash< auto > getResponseHeadersForFile(string path, hash< auto > cx, hash< auto > request_hdr)
this method returns a hash giving response headers with a default content type for the file to be ser...
const Defaults
default configuration values
Definition WebUtil.qm.dox.h:574
softint chunk_size
HTTP chunk size in bytes.
Definition WebUtil.qm.dox.h:551
const DefaultFileReadTimeout
default read timeout for serving files
Definition WebUtil.qm.dox.h:565
const Dirlisting
dirlisting template
Definition WebUtil.qm.dox.h:578
*hash< HttpResponseInfo > authenticateRequest(HttpListenerInterface listener, hash< auto > hdr, reference< hash< auto > > cx)
Authenticates the request if possible.
StaticTemplateManager stm()
static templates
AbstractStreamRequest getStreamRequestImpl(HttpServer::HttpListenerInterface listener, Qore::Socket s, hash< auto > cx, hash< auto > hdr, *data body, InputStream stream, *hash< auto > respHdr)
must return a AbstractStreamRequest object to stream the requested file with chunked transfer encodin...
*hash< HttpResponseInfo > renderDirectory(hash< auto > cx, string path)
this method is called when a directory should be rendered
const Unix
flag for UNIX operating systems
Definition WebUtil.qm.dox.h:562
*hash< HttpResponseInfo > tryServeRequest(HttpServer::HttpListenerInterface listener, Qore::Socket s, hash< auto > cx, hash< auto > hdr, *data body)
tries to serve the request from the filesystem
*string default_target
the default target if a URL cannot be satisfied
Definition WebUtil.qm.dox.h:545
hash< HttpResponseInfo > sendFile(InputStream stream, *hash< auto > respHdr)
returns a handler hash response with the data to be sent in a monolithic message
hash< HttpResponseInfo > handleRequest(HttpServer::HttpListenerInterface listener, Qore::Socket s, hash< auto > cx, hash< auto > hdr, *data body)
Handles the request and serves a file from the file system or a rendered template if possible.
const DirSep
directory separator character
Definition WebUtil.qm.dox.h:571
hash< HttpResponseInfo > unhandledRequest(hash< auto > cx, hash< auto > hdr, *data body)
this method returns a 404 "Not Found" error code to GET requests and a 501 "Not Implemented" error co...
*hash< HttpResponseInfo > preprocessRequest(HttpServer::HttpListenerInterface listener, reference< hash< auto > > hdr, reference< hash< auto > > cx)
Preproecsses a request before authentication.
softlist indexes
indexes for directories; handled in order of appearance
Definition WebUtil.qm.dox.h:539
string file_root
root directory for serving files
Definition WebUtil.qm.dox.h:536
softint chunked_threshold
minimum size in bytes for plain files to be sent with a chnked transfer
Definition WebUtil.qm.dox.h:548
logError(string fmt,...)
default implementation is empty; this method is called with error log messages; reimplement in subcla...
hash template_extensions
file extensions handled as templates
Definition WebUtil.qm.dox.h:542
hash< HttpResponseInfo > sendFileChunked(HttpServer::HttpListenerInterface listener, Qore::Socket s, hash< auto > cx, hash< auto > hdr, *data body, InputStream stream, *hash< auto > respHdr)
returns a handler hash response with the file's data to be sent in a HTTP message with chunked transf...
constructor(string new_file_root, string url_root='/', *hash< auto > opt)
create the object optionally with the given HttpServer::AbstractAuthenticator
*hash< HttpResponseInfo > handleRequestImpl(reference< hash< auto > > cx, hash< auto > hdr, *data body)
this method is called by this class's handleRequest() before trying to service the request automatica...
this class handles chunked file sends
Definition WebUtil.qm.dox.h:113
hash< HttpResponseInfo > getResponseHeaderMessageImpl()
returns the reponse headers
bool txt
text flag
Definition WebUtil.qm.dox.h:122
constructor(HttpServer::HttpListenerInterface listener, HttpServer::AbstractHttpRequestHandler handler, Qore::Socket s, hash< auto > cx, hash< auto > hdr, *data body, Qore::ReadOnlyFile file, bool textflag, int chunk_size, *hash< auto > respHdr)
creates the object
auto sendImpl()
returns data to send
int cs
chunk size
Definition WebUtil.qm.dox.h:124
*hash< auto > respHdr
response headers
Definition WebUtil.qm.dox.h:126
ReadOnlyFile f
file object
Definition WebUtil.qm.dox.h:120
manages a template resource that may need to be recompiled if the file is updated in the filesystem; ...
Definition WebUtil.qm.dox.h:298
int po
parse options used on the program
Definition WebUtil.qm.dox.h:303
string ct
the content type of the rendered template
Definition WebUtil.qm.dox.h:309
RWLock rwl()
to ensure atomicity regarding contention between setup/recompiles and rendering requests
*code psetup
code to perform Program initialization when creating a new Program object (inport API,...
Definition WebUtil.qm.dox.h:315
const TemplateFunc
the name of the template function
Definition WebUtil.qm.dox.h:312
string path
the path to the template
Definition WebUtil.qm.dox.h:306
*date mtime
file's modification time
Definition WebUtil.qm.dox.h:321
constructor(string resource_path, int parse_opts=DefaultProgramOptions, *code pgm_setup)
creates the object based on the pathname and Program options
hash< HttpResponseInfo > renderImpl(date new_mtime, hash< auto > ctx, int http_code=200, *hash< auto > hdr)
explicitly renders the given template with the given argument
A container for holding static text templates (ie that do not change once created in the template man...
Definition WebUtil.qm.dox.h:423
Sequence seq()
Sequence for template function names.
int po
parse options for template containers
Definition WebUtil.qm.dox.h:437
constructor(int po=DefaultProgramOptions)
sets up the object
hash< string, hash< auto > > th
Maps template names to function names.
Definition WebUtil.qm.dox.h:431
*hash< string, bool > getTemplateHash()
returns a hash of template names, values are True or NOTHING if no templates are currently cached
setupProgram(Program p)
override in subclasses to customize the setup of template Programs; this method performs no action
string add(string name, string src, *string ct)
adds a template to the object
list< string > getTemplateList()
returns a list of template names, an empty list is returned if there are no templates
bool hasTemplate(string tname)
returns True if the given template exists, False if not
hash< string, TextTemplateBase > toh
Maps template names to TextTemplateBase objects.
Definition WebUtil.qm.dox.h:428
*hash< HttpResponseInfo > tryRender(string tname, hash< auto > ctx, int code=200, *hash< auto > hdr)
explicitly renders the given template with the given argument context hash if the template exists; if...
hash< HttpResponseInfo > render(string tname, hash< auto > ctx, int code=200, *hash< auto > hdr)
explicitly renders the given template with the given argument
this is the static base class for all template Program container classes
Definition WebUtil.qm.dox.h:226
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...
const DefaultProgramOptions
default parse options for template Programs
Definition WebUtil.qm.dox.h:230
static string getContentType(string name)
returns the content type from the file name, ignores any leading "q" in the extensions,...
static string add(Qore::Program p, string fn, string name, string src)
adds a template function to a template Program object
static bool doBlock(string end, reference< string > src, string type, reference< int > i, reference< list< hash > > l)
a helper method used in parsing
this class manages templates based on files
Definition WebUtil.qm.dox.h:365
hash< string, AbstractTemplate > th
hash for template storage
Definition WebUtil.qm.dox.h:373
purge(string tname)
this method can be called when a resource is requested that no longer exists in case a template is st...
hash< HttpResponseInfo > render(string tname, string path, date mtime, hash< auto > ctx, int code=200, *hash< auto > hdr)
explicitly renders the given template with the given path and context argument
RWLock rwl()
read-write lock for managing template access
*code psetup
code to perform Program initialization when creating a new Program object (inport API,...
Definition WebUtil.qm.dox.h:379
int po
parse options used on the program
Definition WebUtil.qm.dox.h:376
constructor(int parse_opts=StaticTextTemplateBase::DefaultProgramOptions, *code pgm_setup)
creates the object with optional Program options
this is the base class for all template Program container classes
Definition WebUtil.qm.dox.h:279
Program p
Holds the template generation function.
Definition WebUtil.qm.dox.h:284
Program getProgram()
returns the contained Program object
constructor(int po=DefaultProgramOptions)
sets up the object
the WebUtil namespace contains all the objects in the WebUtil module
Definition WebUtil.qm.dox.h:111