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: