// Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#ifndef HTTP_HEADER_H
#define HTTP_HEADER_H
#include <boost/shared_ptr.hpp><--- Include file: not found. Please note: Cppcheck does not need standard library headers to get proper results.
#include <string><--- Include file: not found. Please note: Cppcheck does not need standard library headers to get proper results.
namespace isc {
namespace http {
/// @brief Represents HTTP header including a header name and value.
///
/// It includes methods for retrieving header name and value in lower case
/// and for case insensitive comparison of header values.
class HttpHeader {
public:
/// @brief Constructor.
///
/// @param header_name Header name.
/// @param header_value Header value.
explicit HttpHeader(const std::string& header_name,
const std::string& header_value = "");
/// @brief Returns header name.
std::string getName() const {<--- Function 'getName()' should return member 'header_name_' by const reference.
return (header_name_);
}
/// @brief Returns header value.
std::string getValue() const {<--- Function 'getValue()' should return member 'header_value_' by const reference.
return (header_value_);
}
/// @brief Returns header value as unsigned integer.
///
/// @throw BadValue if the header value is not a valid number.
uint64_t getUint64Value() const;
/// @brief Returns lower case header name.
std::string getLowerCaseName() const;
/// @brief Returns lower case header value.
std::string getLowerCaseValue() const;
/// @brief Case insensitive comparison of header value.
///
/// @param v Value to be compared.
///
/// @return true if header value is equal, false otherwise.
bool isValueEqual(const std::string& v) const;
private:
std::string header_name_; ///< Header name.
std::string header_value_; ///< Header value.
};
/// @brief Pointer to the @c HttpHeader class.
typedef boost::shared_ptr<HttpHeader> HttpHeaderPtr;
/// @brief Represents HTTP Host header.
class HostHttpHeader : public HttpHeader {
public:
/// @brief Constructor.
///
/// @param header_value Host header value. The default is empty
/// string.
explicit HostHttpHeader(const std::string& header_value = "")
: HttpHeader("Host", header_value) {
}
};
/// @brief Pointer to the HTTP host header.
typedef boost::shared_ptr<HostHttpHeader> HostHttpHeaderPtr;
} // end of namespace isc::http
} // end of namespace isc
#endif // HTTP_HEADER_H