--- parser3/src/include/pa_request_info.h 2003/07/24 11:31:21 1.2 +++ parser3/src/include/pa_request_info.h 2016/11/25 23:37:06 1.12 @@ -1,14 +1,14 @@ /** @file Parser: request info class decl. - Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2015 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ #ifndef PA_REQUEST_INFO_H #define PA_REQUEST_INFO_H -static const char* IDENT_REQUEST_INFO_H="$Date: 2003/07/24 11:31:21 $"; +#define IDENT_PA_REQUEST_INFO_H "$Id: pa_request_info.h,v 1.12 2016/11/25 23:37:06 moko Exp $" /// some information from web server class Request_info { @@ -22,11 +22,40 @@ public: const char* content_type; size_t content_length; const char* cookie; + + char** argv; + int args_skip; bool mail_received; //@} //@{ these are filed by Request class itself: user's post data const char* post_data; size_t post_size; //@} + + // misha@ Probably it's a good idea to move this method into targets, but de facto the only POST and PUT can have the body and all targets should support it + bool can_have_body(){ + return + method + && ( + strcasecmp(method, "POST") == 0 + || strcasecmp(method, "PUT") == 0 + ); + } + + static const char* strip_absolute_uri(const char *auri){ + if(!auri || *auri == '/') + return auri; + + // extractring https?://site.name prefix allowed by http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2 + + if(!pa_strncasecmp(auri, "http://")) + auri+=7; + else if(!pa_strncasecmp(auri, "https://")) + auri+=8; + else + return auri; + for(; *auri && *auri != '/'; auri++); + return auri; + } }; #endif