2 * Copyright 2001-2010 Internet2
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 * Interface to HTTP requests.
24 #include "HTTPRequest.h"
26 using namespace xmltooling;
29 GenericRequest::GenericRequest()
33 GenericRequest::~GenericRequest()
37 HTTPRequest::HTTPRequest()
41 HTTPRequest::~HTTPRequest()
45 bool HTTPRequest::isSecure() const
47 return strcmp(getScheme(),"https")==0;
50 const char* HTTPRequest::getCookie(const char* name) const
52 if (m_cookieMap.empty()) {
53 string cookies=getHeader("Cookie");
55 string::size_type pos=0,cname,namelen,val,vallen;
56 while (pos !=string::npos && pos < cookies.length()) {
57 while (isspace(cookies[pos])) pos++;
59 pos=cookies.find_first_of("=",pos);
60 if (pos == string::npos)
64 if (pos==cookies.length())
67 pos=cookies.find_first_of(";",pos);
68 if (pos != string::npos) {
71 m_cookieMap.insert(make_pair(cookies.substr(cname,namelen),cookies.substr(val,vallen)));
74 m_cookieMap.insert(make_pair(cookies.substr(cname,namelen),cookies.substr(val)));
77 map<string,string>::const_iterator lookup=m_cookieMap.find(name);
78 return (lookup==m_cookieMap.end()) ? nullptr : lookup->second.c_str();