Annotation of parser3/src/types/pa_vrequest.C, revision 1.30
1.2 paf 1: /** @file
1.5 paf 2: Parser: @b request class.
1.2 paf 3:
1.28 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.30 ! paf 8: static const char* IDENT_VREQUEST_C="$Date: 2003/08/19 12:07:35 $";
1.1 paf 9:
10: #include "pa_vrequest.h"
1.28 paf 11: #include "pa_request_info.h"
12: #include "pa_request_charsets.h"
1.13 paf 13: #include "pa_charsets.h"
1.28 paf 14: #include "pa_vstring.h"
1.1 paf 15:
1.30 ! paf 16: // defines
! 17:
! 18: #define DOCUMENT_ROOT_NAME "document-root"
! 19:
! 20:
1.7 parser 21: // request: CLASS,method,field
1.28 paf 22: Value* VRequest::get_element(const String& aname, Value& /*aself*/, bool /*looking_up*/) {
1.12 paf 23: // $charset
1.24 paf 24: if(aname==CHARSET_NAME)
1.28 paf 25: return new VString(*new String(fcharsets.source().NAME(), String::L_TAINTED));
1.30 ! paf 26:
! 27: // $query $uri $document-root $body
! 28: const char* buf;
! 29: size_t size=0;
! 30: if(aname=="query")
! 31: buf=finfo.query_string;
! 32: else if(aname=="uri")
! 33: buf=finfo.uri;
! 34: else if(aname==DOCUMENT_ROOT_NAME)
! 35: buf=finfo.document_root;
! 36: else if(aname=="body") {
! 37: buf=finfo.post_data;
! 38: size=finfo.post_size;
! 39: } else
! 40: return bark("%s field not found", &aname);
1.12 paf 41:
1.30 ! paf 42: return new VString(*new String(buf?buf:"", size, true));
1.1 paf 43: }
44:
1.28 paf 45: bool VRequest::put_element(const String& aname, Value* avalue, bool replace) {
1.30 ! paf 46: // $charset
1.20 paf 47: if(aname==CHARSET_NAME) {
1.28 paf 48: fcharsets.set_source(charsets.get(avalue->as_string().
49: change_case(UTF8_charset, String::CC_UPPER)));
1.20 paf 50: return true;
1.30 ! paf 51: }
! 52:
! 53: // $document-root
! 54: if(aname==DOCUMENT_ROOT_NAME) {
! 55: finfo.document_root=avalue->as_string().cstr(String::L_FILE_SPEC);
! 56: return true;
! 57: }
! 58:
! 59: return Value::put_element(aname, avalue, replace);
1.12 paf 60: }
E-mail: