NAME
libapreq - Apache Request C Library
SYNOPSIS
DESCRIPTION
ApacheRequest
- ApacheRequest *ApacheRequest_new (request_rec *r)
-
This function creates a new ApacheRequest object using the given request_rec structure:
ApacheRequest *req = ApacheRequest_new(r);
- int ApacheRequest_parse (ApacheRequest *req)
-
If the request method is GET, query string arguments, if any will be parsed and saved. If the request method is POST and Content-type is application/x-www-form-urlencoded the client data will be read, parsed and saved. If the request method is POST and the Content-type is multipart/form-data, the form parameters will be parsed and saved, the uploaded file will be written to a temporary file which can be accessed with the upload field. The return value is OK on success, otherwise an error code that your handler should return.
- const char *ApacheRequest_param (ApacheRequest *req, const char *key)
-
This function will return the value of the given parameter key:
const char *value = ApacheRequest_param(req, "Key");
- array_header *ApacheRequest_params (ApacheRequest *req, const char *key)
-
This function will return an array_header of values for the given parameter key:
array_header *values = ApacheRequest_params(req, "Key");
- char *ApacheRequest_params_as_string (ApacheRequest *req, const char *key)
-
This function will format multi-value parmeters into a comma delimited string.
char *list = ApacheRequest_params_as_string(req, "Key");
- req->parms
-
This field is an Apache table that holds the parsed contents of GET and POST requests. Example:
table *data = req->parms; ap_table_set(data, "Key", "Value");
- req->post_max
-
Limit the size of POST data. ApacheRequest_parse will return an error code if the size is exceeded:
int status; ApacheRequest *req = ApacheRequest_new(r); req->post_max = 1204; if((status = ApacheRequest_parse(req)) != OK) { char *errmsg = ap_table_get(r->notes, "error-notes"); ... return status; }
- req->disable_uploads
-
Disable file uploads. ApacheRequest_parse will return an error code if a file upload is attempted:
int status; ApacheRequest *req = ApacheRequest_new(r); req->disable_uploads = 1; if((status = ApacheRequest_parse(req)) != OK) { char *errmsg = ap_table_get(r->notes, "error-notes"); ... return status; }
- ApacheUpload *upload = ApacheRequest_upload (ApacheRequest *req)
-
If the request Content-type was that of multipart/form-data, this will return an ApacheUpload pointer containing the upload data, NULL otherwise. See ApacheUpload.
ApacheUpload *upload = ApacheRequest_upload(req);
ApacheUpload
The ApacheUpload structure holds all information for all uploaded files and is accessed via the upload field of an ApacheRequest structure.
- upload->name
-
The name of the filefield parameter:
char *name = upload->name;
- upload->filename
-
The name of the upload file:
char *filename = upload->filename;
- upload->fp
-
A file pointer to the uploaded file:
FILE *fp = upload->fp;
- upload->size
-
The size of the uploaded file in bytes:
long size = upload->size;
- upload->info
-
The additional header information for the uploaded file:
table *info = upload->info; const char *type = ap_table_get(info, "Content-type");
- upload->next
-
Pointer to the next ApacheUpload structure if multiple files were uploaded:
ApacheUpload *uptr; for (uptr = ApacheRequest_upload(req); uptr; uptr = uptr->next) { char *name = uptr->name; FILE *fp = uptr->fp; ... }
- ApacheUpload *ApacheUpload_find (ApacheUpload *upload, char *name)
-
Returns the ApacheUpload pointer associated with name or NULL if name is not found in the list:
ApacheUpload *upload = ApacheUpload_find(upload, name);
- const char *ApacheUpload_info (ApacheUpload *upload, char *key)
-
Shortcut for accessing the info table:
const char *type = ApacheUpload_info(upload, "Content-Type");
- const char *ApacheUpload_type (ApacheUpload *upload)
-
Shortcut for accessing the uploaded file Content-Type:
const char *type = ApacheUpload_type(upload);
ApacheCookie
- ApacheCookie *ApacheCookie_new (request_rec *r, ...)
-
This function creates a new ApacheCookie object, using the given request_request and optional attribute arguments which are as follows:
- -name
-
Sets the name field to the given value.
- -value
-
Adds the value to values field.
- -expires
-
Sets the expires field to the calculated date string. See ApacheCookie_expires for a listing of format options. The default is NULL.
- -domain
-
Sets the domain field to the given value. The default is NULL.
- -path
-
Sets the path field to the given value. The default path is derived from the requested uri.
- -secure
-
Sets the secure field to true or false using a given string value of On or Off. The default is Off.
Example:
ApacheCookie *c = ApacheCookie_new(r, "-name", "foo", "-value", "bar", "-expires", "+3M", "-domain", ".cp.net", "-path", "/mypath/database", "-secure", "On", NULL);
- char *ApacheCookie_attr (ApacheCookie *c, char *key, char *val)
-
This function is used to get or set a cookie attribute pair, accepting the same attributes as the list above. Example:
char *name = ApacheCookie_attr(c, "-name"); /* same as c->name */ (void *)ApacheCookie_attr(c, "-expires", "+3h");
- ApacheCookieJar *ApacheCookie_parse (request_rec *r, const char *data)
-
This function parses the given data string or the incoming Cookie header, returning an ApacheCookieJar of ApacheCookie objects.
Example:
int i; ApacheCookieJar *cookies = ApacheCookie_parse(r, NULL); for (i = 0; i < ApacheCookieJarItems(cookies); i++) { ApacheCookie *c = ApacheCookieJarFetch(cookies, i); int j; for (j = 0; j < ApacheCookieItems(c); j++) { char *name = c->name; char *value = ApacheCookieFetch(c, j); ... } }
- int ApacheCookieItems (ApacheCookie *c)
-
The number of values for the given cookie.
- char *ApacheCookieFetch (ApacheCookie *c, int n)
-
The nth value for the given cookie.
- void ApacheCookieAdd (ApacheCookie *c, char *value)
-
Add a new value to the cookie.
-
The number of cookies in the given cookie jar.
-
The nth cookie in the given cookie jar.
-
Add a new cookie to the cookie jar.
- char *ApacheCookie_expires (ApacheCookie *c, char *time_str)
-
This function gets or sets the expiration date for cookie. The following forms are all valid for the time_str parmeter:
+30s 30 seconds from now +10m ten minutes from now +1h one hour from now -1d yesterday (i.e. "ASAP!") now immediately +3M in three months +10y in ten years time Thursday, 25-Apr-1999 00:40:33 GMT at the indicated time & date
- void ApacheCookie_bake (ApacheCookie *c)
-
Put cookie in the oven to bake. (Add a Set-Cookie header to the outgoing headers table.)
ApacheCookie_bake(c);
- char *ApacheCookie_as_string (ApacheCookie *c)
-
Returns a string version of the cookie:
ap_table_add(r->headers_out, "Set-Cookie", ApacheCookie_as_string(c));
CREDITS
This library is based on Perl modules by Lincoln Stein.
AUTHOR
Doug MacEachern