X Tutup
/* This file is part of libhttpserver Copyright (C) 2011 Sebastiano Merlino This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "http_utils.hpp" #include "http_request.hpp" #include "string_utilities.hpp" using namespace std; namespace httpserver { //REQUEST void http_request::set_method(const std::string& method) { string_utilities::to_upper_copy(method, this->method); } bool http_request::check_digest_auth(const std::string& realm, const std::string& password, int nonce_timeout, bool& reload_nonce) const { int val = MHD_digest_auth_check(underlying_connection, realm.c_str(), digested_user.c_str(), password.c_str(), nonce_timeout); if(val == MHD_INVALID_NONCE) { reload_nonce = true; return false; } else if(val == MHD_NO) { reload_nonce = false; return false; } reload_nonce = false; return true; } const std::vector > http_request::get_headers() const { std::vector > to_ret; std::map::const_iterator it; for(it = headers.begin(); it != headers.end(); ++it) #ifdef USE_CPP_ZEROX to_ret.push_back(std::make_pair((*it).first,(*it).second)); #else to_ret.push_back(std::make_pair((*it).first,(*it).second)); #endif return to_ret; } size_t http_request::get_headers(std::vector >& result) const { std::map::const_iterator it; for(it = headers.begin(); it != headers.end(); ++it) #ifdef USE_CPP_ZEROX result.push_back(std::make_pair((*it).first,(*it).second)); #else result.push_back(std::make_pair((*it).first,(*it).second)); #endif return result.size(); } #ifndef SWIG size_t http_request::get_headers(std::map& result) const { result = this->headers; return result.size(); } #endif const std::vector > http_request::get_footers() const { std::vector > to_ret; std::map::const_iterator it; for(it = footers.begin(); it != footers.end(); ++it) #ifdef USE_CPP_ZEROX to_ret.push_back(std::make_pair((*it).first,(*it).second)); #else to_ret.push_back(std::make_pair((*it).first,(*it).second)); #endif return to_ret; } size_t http_request::get_footers(std::vector >& result) const { std::map::const_iterator it; for(it = footers.begin(); it != footers.end(); ++it) #ifdef USE_CPP_ZEROX result.push_back(std::make_pair((*it).first,(*it).second)); #else result.push_back(std::make_pair((*it).first,(*it).second)); #endif return result.size(); } #ifndef SWIG size_t http_request::get_footers(std::map& result) const { result = this->footers; return result.size(); } #endif const std::vector > http_request::get_cookies() const { std::vector > to_ret; std::map::const_iterator it; for(it = cookies.begin(); it != cookies.end(); ++it) #ifdef USE_CPP_ZEROX to_ret.push_back(std::make_pair((*it).first,(*it).second)); #else to_ret.push_back(std::make_pair((*it).first,(*it).second)); #endif return to_ret; } size_t http_request::get_cookies(std::vector >& result) const { std::map::const_iterator it; for(it = cookies.begin(); it != cookies.end(); ++it) #ifdef USE_CPP_ZEROX result.push_back(std::make_pair((*it).first,(*it).second)); #else result.push_back(std::make_pair((*it).first,(*it).second)); #endif return result.size(); } #ifndef SWIG size_t http_request::get_cookies(std::map& result) const { result = this->cookies; return result.size(); } #endif const std::vector > http_request::get_args() const { std::vector > to_ret; std::map::const_iterator it; for(it = args.begin(); it != args.end(); ++it) #ifdef USE_CPP_ZEROX to_ret.push_back(std::make_pair((*it).first,(*it).second)); #else to_ret.push_back(std::make_pair((*it).first,(*it).second)); #endif return to_ret; } size_t http_request::get_args(std::vector >& result) const { std::map::const_iterator it; for(it = args.begin(); it != args.end(); ++it) #ifdef USE_CPP_ZEROX result.push_back(std::make_pair((*it).first,(*it).second)); #else result.push_back(std::make_pair((*it).first,(*it).second)); #endif return result.size(); } #ifndef SWIG size_t http_request::get_args(std::map& result) const { result = this->args; return result.size(); } #endif };
X Tutup