|
|
1.2 paf 1: /** @file
2: Parser: request class.
3:
1.1 paf 4: Copyright(c) 2001 ArtLebedev Group(http://www.artlebedev.com)
1.2 paf 5:
1.1 paf 6: Author: Alexander Petrosyan <paf@design.ru>(http://design.ru/paf)
7:
1.4 ! paf 8: $Id: pa_vrequest.C,v 1.3 2001/03/19 23:07:24 paf Exp $
1.1 paf 9: */
10:
11: #include "pa_vrequest.h"
12: #include "pa_request.h"
13:
14: // request: CLASS,BASE,method,field
15: Value *VRequest::get_element(const String& aname) {
1.4 ! paf 16: // $browser
! 17: if(aname=="browser") {
! 18: VHash *vhash=NEW VHash(pool());
! 19:
! 20: // analize
! 21: bool ie=true;
! 22: const char *version=0;
! 23: const char *agent=frequest.info.user_agent;
! 24: if(agent) {
! 25: if(strstr(agent, "compatible")) {
! 26: if(const char *msie=strstr(agent, "MSIE ")) {
! 27: ie=true;
! 28: version=msie+5;
! 29: }
! 30: } else {
! 31: if(!strncasecmp(agent, "MOZILLA/", 8)) {
! 32: ie=false;
! 33: version=agent+8;
! 34: }
! 35: }
! 36: }
! 37:
! 38: // set $browser.type
! 39: vhash->hash().put(*NEW String(pool(), "type"),
! 40: NEW VString(*NEW String(pool(), ie?"ie":"nn")));
! 41: if(version) { // we know the version
! 42: // set $browser.version
! 43: vhash->hash().put(*NEW String(pool(), "version"),
! 44: NEW VDouble(pool(), atof(version)));
! 45: }
! 46: //
! 47: return vhash;
! 48: }
! 49:
1.1 paf 50: // $query $uri
51: const char *cstr=0;
52: if(aname=="query")
53: cstr=frequest.info.query_string;
54: if(aname=="uri")
55: cstr=frequest.info.uri;
56: if(!cstr)
57: return 0;
58:
59: String& string=*NEW String(pool());
60: string.APPEND_TAINTED(cstr, 0, "request", 0);
61: return NEW VString(string);
62: }
63: