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: