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

1.1       paf         1: /** @file
                      2:        Parser: @b response class.
                      3: 
1.34      moko        4:        Copyright (c) 2001-2015 Art. Lebedev Studio (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: 
                      8: #include "pa_vresponse.h"
1.18      paf         9: #include "pa_request_charsets.h"
1.1       paf        10: #include "pa_charsets.h"
                     11: #include "pa_charset.h"
                     12: #include "pa_vstring.h"
1.11      paf        13: #include "pa_vdate.h"
1.26      paf        14: #include "pa_vhash.h"
                     15: 
1.35    ! moko       16: volatile const char * IDENT_PA_VRESPONSE_C="$Id: pa_vresponse.C,v 1.34 2015/10/26 01:22:02 moko Exp $" IDENT_PA_VRESPONSE_H;
1.30      moko       17: 
1.26      paf        18: // defines
                     19: 
                     20: #define REQUEST_HEADERS_ELEMENT_NAME "headers"
1.1       paf        21: 
1.29      misha      22: Value* VResponse::get_element(const String& aname) {
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.35    ! moko       32:        if(Value* result=VStateless_class::get_element(aname))
1.8       paf        33:                return result;
1.26      paf        34: 
1.8       paf        35:        // $field
1.33      moko       36:        return ffields.get(aname.change_case(fcharsets.source(), String::CC_UPPER));
1.1       paf        37: }
                     38: 
1.31      moko       39: const VJunction* VResponse::put_element(const String& aname, Value* avalue) { 
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(
1.33      moko       46:                        aname.change_case(fcharsets.source(), String::CC_UPPER),
1.32      misha      47:                        !avalue || (avalue->is_string() && !avalue->is_defined()) ? 0: avalue
                     48:                );
1.8       paf        49: 
1.21      paf        50:        return PUT_ELEMENT_REPLACED_ELEMENT;
1.11      paf        51: }

E-mail: