1 #include "otsdaq-core/CgiDataUtilities/CgiDataUtilities.h"
2 #include "otsdaq-core/Macros/CoutMacros.h"
12 std::string CgiDataUtilities::getOrPostData(cgicc::Cgicc& cgi,
const std::string& needle)
14 std::string postData =
"";
15 if((postData = CgiDataUtilities::postData(cgi,needle)) ==
"")
16 postData = CgiDataUtilities::getData(cgi,needle);
25 std::string CgiDataUtilities::postData(cgicc::Cgicc& cgi,
const std::string& needle)
27 std::string postData =
"&"+cgi.getEnvironment().getPostData();
29 size_t start_pos = postData.find(
"&"+needle+
"=");
30 if(start_pos == std::string::npos)
return "";
32 size_t end_pos = postData.find(
'=',start_pos);
33 if(end_pos == std::string::npos)
return "";
35 start_pos += needle.length() + 2;
36 end_pos = postData.find(
'&',start_pos);
37 if(end_pos == std::string::npos) postData.length();
41 return postData.substr(start_pos,end_pos-start_pos);
48 std::string CgiDataUtilities::getData(cgicc::Cgicc &cgi,
const std::string &needle)
50 std::string getData =
"&"+cgi.getEnvironment().getQueryString();
53 size_t start_pos = getData.find(
"&"+needle+
"=");
54 if(start_pos == std::string::npos)
return "";
56 size_t end_pos = getData.find(
'=',start_pos);
57 if(end_pos == std::string::npos)
return "";
59 start_pos += needle.length() + 2;
60 end_pos = getData.find(
'&',start_pos);
61 if(end_pos != std::string::npos) end_pos -= start_pos;
66 return getData.substr(start_pos,end_pos);
70 int CgiDataUtilities::getOrPostDataAsInt (cgicc::Cgicc& cgi,
const std::string& needle)
71 {
return atoi(getOrPostData(cgi,needle).c_str()); }
72 int CgiDataUtilities::postDataAsInt (cgicc::Cgicc& cgi,
const std::string& needle)
73 {
return atoi(postData(cgi,needle).c_str()); }
74 int CgiDataUtilities::getDataAsInt (cgicc::Cgicc& cgi,
const std::string& needle)
75 {
return atoi(getData(cgi,needle).c_str()); }
82 std::string CgiDataUtilities::decodeURIComponent(
const std::string &data)
84 std::string decodeURIString(data.size(),0);
86 for(
unsigned int i=0;i<data.size();++i,++j)
92 decodeURIString[j] += (data[i+1]-55)*16;
94 decodeURIString[j] += (data[i+1]-48)*16;
98 decodeURIString[j] += (data[i+2]-55);
100 decodeURIString[j] += (data[i+2]-48);
105 decodeURIString[j] = data[i];
107 decodeURIString.resize(j);
108 return decodeURIString;