Annotation of parser3/src/types/pa_vrequest.C, revision 1.26

1.2       paf         1: /** @file
1.5       paf         2:        Parser: @b request class.
1.2       paf         3: 
1.17      paf         4:        Copyright(c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)
1.16      paf         5:        Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.18      paf         6: */
1.2       paf         7: 
1.26    ! paf         8: static const char* IDENT_VREQUEST_C="$Date: 2002/10/31 12:22:15 $";
1.1       paf         9: 
                     10: #include "pa_vrequest.h"
                     11: #include "pa_request.h"
1.13      paf        12: #include "pa_charsets.h"
                     13: #include "pa_charset.h"
1.1       paf        14: 
1.7       parser     15: // request: CLASS,method,field
1.26    ! paf        16: Value *VRequest::get_element(const String& aname, Value&  /*aself*/, bool /*looking_up*/) {
1.12      paf        17:        // $charset
1.24      paf        18:        if(aname==CHARSET_NAME)
1.13      paf        19:                return NEW VString(pool().get_source_charset().name());
1.12      paf        20:        else {  
1.24      paf        21:                // $query $uri $body
1.25      paf        22:                const char *buf;
                     23:                size_t size=0;
1.24      paf        24:                if(aname=="query")
1.25      paf        25:                        buf=frequest.info.query_string;
1.24      paf        26:                else if(aname=="uri")
1.25      paf        27:                        buf=frequest.info.uri;
                     28:                else if(aname=="body") {
                     29:                        buf=frequest.post_data;
                     30:                        size=frequest.post_size;
                     31:                } else
1.24      paf        32:                        bark("%s field not found", 0, &aname);
1.12      paf        33: 
                     34:                String& string=*NEW String(pool());
1.25      paf        35:                string.APPEND_TAINTED(buf?buf:"", size, "request", 0);
1.12      paf        36:                return NEW VString(string);
                     37:        }
1.1       paf        38: }
                     39: 
1.20      paf        40: bool VRequest::put_element(const String& aname, Value *avalue, bool replace) {
1.12      paf        41:        // guard charset change
1.20      paf        42:        if(aname==CHARSET_NAME) {
                     43:                pool().set_source_charset(charsets->get_charset(avalue->as_string()));
                     44:                return true;
                     45:        } else
                     46:                return Value::put_element(aname, avalue, replace);
1.12      paf        47: }

E-mail: