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

1.2       paf         1: /** @file
1.5       paf         2:        Parser: @b request class.
1.2       paf         3: 
1.1       paf         4:        Copyright(c) 2001 ArtLebedev Group(http://www.artlebedev.com)
1.11      paf         5:        Author: Alexander Petrosyan <paf@design.ru>(http://paf.design.ru)
1.2       paf         6: 
1.13    ! paf         7:        $Id: pa_vrequest.C,v 1.12 2001/12/14 12:53:48 paf Exp $
1.1       paf         8: */
                      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.12      paf        16: Value *VRequest::get_element(const String& name) {
                     17:        // $charset
                     18:        if(name==CHARSET_NAME)
1.13    ! paf        19:                return NEW VString(pool().get_source_charset().name());
1.12      paf        20:        else {  
                     21:                // $query $uri  
                     22:                const char *cstr=0;
                     23:                if(name=="query")
                     24:                        cstr=frequest.info.query_string;
                     25:                else if(name=="uri")
                     26:                        cstr=frequest.info.uri;
                     27: 
                     28:                String& string=*NEW String(pool());
                     29:                string.APPEND_TAINTED(cstr?cstr:"", 0, "request", 0);
                     30:                return NEW VString(string);
                     31:        }
1.1       paf        32: }
                     33: 
1.12      paf        34: void VRequest::put_element(const String& name, Value *value) {
                     35:        // guard charset change
1.13    ! paf        36:        if(name==CHARSET_NAME) {
        !            37:                const String& charset_name=value->as_string();
        !            38:                if(Charset *charset=(Charset *)charsets->get(charset_name))
        !            39:                        pool().set_source_charset(*charset);
        !            40:                else
        !            41:                        throw Exception(0, 0,
        !            42:                                &charset_name,
        !            43:                                "unknown charset");
        !            44:        } else
1.12      paf        45:                Value::put_element(name, value);
                     46: }

E-mail: