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

1.1       paf         1: /** @file
                      2:        Parser: @b response class.
                      3: 
1.40    ! moko        4:        Copyright (c) 2001-2020 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.40    ! moko       16: volatile const char * IDENT_PA_VRESPONSE_C="$Id: pa_vresponse.C,v 1.39 2020/10/27 10:10:10 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.37      moko       42:                fcharsets.set_client(pa_charsets.get(avalue->as_string()));
1.2       paf        43:        else
1.36      moko       44:                ffields.put(aname.change_case(fcharsets.source(), String::CC_UPPER), !avalue || (avalue->is_string() && !avalue->is_defined()) ? 0: avalue);
1.8       paf        45: 
1.39      moko       46:        return 0;
1.11      paf        47: }

E-mail: