Annotation of parser3/src/types/pa_vresponse.C, revision 1.28

1.1       paf         1: /** @file
                      2:        Parser: @b response class.
                      3: 
1.28    ! misha       4:        Copyright(c) 2001-2009 ArtLebedev Group (http://www.artlebedev.com)
1.4       paf         5:        Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.6       paf         6: */
1.1       paf         7: 
1.28    ! misha       8: static const char * const IDENT_VRESPONSE_C="$Date: 2006-04-09 13:38:48 $";
1.1       paf         9: 
                     10: #include "pa_vresponse.h"
1.18      paf        11: #include "pa_request_charsets.h"
1.1       paf        12: #include "pa_charsets.h"
                     13: #include "pa_charset.h"
                     14: #include "pa_vstring.h"
1.11      paf        15: #include "pa_vdate.h"
1.26      paf        16: #include "pa_vhash.h"
                     17: 
                     18: // defines
                     19: 
                     20: #define REQUEST_HEADERS_ELEMENT_NAME "headers"
1.1       paf        21: 
1.18      paf        22: Value* VResponse::get_element(const String& aname, Value& aself, bool looking_up) {
1.1       paf        23:        // $charset
1.8       paf        24:        if(aname==CHARSET_NAME)
1.18      paf        25:                return new VString(*new String(fcharsets.client().NAME(), String::L_TAINTED));
1.8       paf        26: 
1.28    ! misha      27:        // $headers
        !            28:        if(aname==REQUEST_HEADERS_ELEMENT_NAME)
        !            29:                return new VHash(ffields);
        !            30:        
1.8       paf        31:        // $method
1.18      paf        32:        if(Value* result=VStateless_object::get_element(aname, aself, looking_up))
1.8       paf        33:                return result;
1.26      paf        34: 
1.8       paf        35:        // $field
1.18      paf        36:        return ffields.get(aname.change_case(fcharsets.source(), String::CC_LOWER));
1.1       paf        37: }
                     38: 
1.24      paf        39: const VJunction* VResponse::put_element(Value& /*aself*/, const String& aname, Value* avalue, bool /*areplace*/) { 
1.1       paf        40:        // guard charset change
1.8       paf        41:        if(aname==CHARSET_NAME)
1.18      paf        42:                fcharsets.set_client(charsets.get(avalue->as_string().
                     43:                        change_case(UTF8_charset, String::CC_UPPER)));
1.2       paf        44:        else
1.18      paf        45:                ffields.put(
                     46:                        aname.change_case(fcharsets.source(), String::CC_LOWER), 
1.27      paf        47:                        avalue && avalue->is_void()? 0: avalue);
1.8       paf        48: 
1.21      paf        49:        return PUT_ELEMENT_REPLACED_ELEMENT;
1.11      paf        50: }

E-mail: