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

1.2       paf         1: /** @file
1.5       paf         2:        Parser: @b request class.
1.2       paf         3: 
1.27      paf         4:        Copyright(c) 2001, 2003 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.27.2.1! paf         8: static const char* IDENT_VREQUEST_C="$Date: 2003/01/21 15:51:20 $";
1.1       paf         9: 
                     10: #include "pa_vrequest.h"
1.27.2.1! paf        11: #include "pa_value_includes.h"
        !            12: #include "pa_request_info.h"
1.13      paf        13: #include "pa_charsets.h"
1.27.2.1! paf        14: #include "pa_vstring.h"
        !            15: 
        !            16: // defines
        !            17: 
        !            18: #define CHARSET_NAME "charset"
1.1       paf        19: 
1.7       parser     20: // request: CLASS,method,field
1.27.2.1! paf        21: ValuePtr VRequest::get_element(ConstStringPtr aname, Value&  /*aself*/, bool /*looking_up*/) {
1.12      paf        22:        // $charset
1.27.2.1! paf        23:        if(*aname==CHARSET_NAME)
        !            24:                return ValuePtr(new VString(fcharsets.source->name()));
1.12      paf        25:        else {  
1.24      paf        26:                // $query $uri $body
1.25      paf        27:                const char *buf;
                     28:                size_t size=0;
1.27.2.1! paf        29:                if(*aname=="query")
        !            30:                        buf=finfo.query_string;
        !            31:                else if(*aname=="uri")
        !            32:                        buf=finfo.uri;
        !            33:                else if(*aname=="body") {
        !            34:                        buf=finfo.post_data;
        !            35:                        size=finfo.post_size;
1.25      paf        36:                } else
1.27.2.1! paf        37:                        bark("%s field not found", 0, aname);
1.12      paf        38: 
1.27.2.1! paf        39:                StringPtr string(new String);
        !            40:                string->APPEND_TAINTED(buf?buf:"", size, "request", 0);
        !            41:                return new VString(string);
1.12      paf        42:        }
1.1       paf        43: }
                     44: 
1.27.2.1! paf        45: bool VRequest::put_element(ConstStringPtr aname, ValuePtr avalue, bool replace) {
1.12      paf        46:        // guard charset change
1.27.2.1! paf        47:        if(*aname==CHARSET_NAME) {
        !            48:                fcharsets.source=charsets.get(avalue->as_string(0));
1.20      paf        49:                return true;
                     50:        } else
                     51:                return Value::put_element(aname, avalue, replace);
1.12      paf        52: }

E-mail: