logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

cgi_register_parse_cb - Register a parse callback

Arguments

       cgi - a CGI struct
       method - the HTTP method you want to handle, or * for all
       ctype - the HTTP Content-Type you want to handle, or * for all
       rock - opaque data that we'll pass to your call back

Description

       The  ClearSilver  CGI Kit has built-in functionality to handle the following methods: GET -> doesn't have
       any data except query string,  which  is  processed  for  all  methods  POST  w/  application/x-www-form-
       urlencoded   POST   w/   multipart/form-data   processed   as  RFC2388  data  into  files  and  HDF  (see
       cgi_filehandle()) PUT (any type) The entire data chunk is stored  as  a  file,  with  meta  data  in  HDF
       (similar  to single files in RFC2388).  The data is accessible via cgi_filehandle with NULL for name.  To
       handle other methods/content types, you have to register your own parse function.  This  isn't  necessary
       if  you  aren't  expecting  any  data,  and  technically  HTTP only allows data on PUT/POST requests (and
       presumably user defined methods).  In particular, if you want to implement XML-RPC or SOAP,  you'll  have
       to  register  a  callback  here  to  grab  the  XML  data chunk.  Usually you'll want to register POST w/
       application/xml or POST w/ text/xml (you either need to register both or register POST w/ * and check the
       ctype yourself, remember to nerr_raise(CGIParseNotHandled) if you aren't handling the POST).  In general,
       your  callback  should:  Find  out  how  much  data  is   available:   l   =   hdf_get_value   (cgi->hdf,
       "CGI.ContentLength",  NULL);  len = atoi(l); And read/handle all of the data using cgiwrap_read.  See the
       builtin handlers for how this is done.  Note that cgiwrap_read is not guarunteed to  return  all  of  the
       data  you  request  (just  like  fread(3))  since it might be reading of a socket.  Sorry.  You should be
       careful when reading the data to watch for short reads (ie, end of file) and cases where the client sends
       you data ad infinitum.

Name

       cgi_register_parse_cb  - Register a parse callback

Return Value

       None

See Also

cgi_debug_init(3),   cgi_parse(3),    cgi_destroy(3),    cgi_js_escape(3),    cgi_html_escape_strfunc(3),
       cgi_register_strfuncs(3),    cgi_output(3),    parse_rfc2388(3),   cgi_url_validate(3),   open_upload(3),
       cgi_cs_init(3),  cgi_url_escape_more(3),  cgi_html_strip_strfunc(3),  cgi_neo_error(3),  cgi_redirect(3),
       cgi_filehandle(3),   cgi_register_parse_cb(3),   cgi_url_escape(3),   cgi_init(3),   cgi_redirect_uri(3),
       cgi_cookie_clear(3),   cgi_url_unescape(3),   cgi_vredirect(3),   cgi_display(3),   cgi_html_ws_strip(3),
       cgi_error(3), cgi_cookie_set(3), cgi_text_html_strfunc(3), cgi_cookie_authority

ClearSilver                                       12 July 2007                          cgi_register_parse_cb(3)

Synopsis

       #include <cgi/cgi.h>

       NEOERR *cgi_register_parse_cb(CGI *cgi, const char *method, const char *ctype,
                                     void *rock, CGI_PARSE_CB parse_cb);

See Also