Commit f53fe0ce authored by knowledge4igor's avatar knowledge4igor

Fix warnings in headers and add registry test

parent 5baa49ce
......@@ -49,7 +49,7 @@ public:
min = std::stoi(minor);
}
void write(std::ostream& os) const {
void write(std::ostream& os) const override {
os << maj;
os << "." << min;
}
......
......@@ -45,13 +45,13 @@ constexpr uint64_t hash(const char* str)
#ifdef SAFE_HEADER_CAST
#define NAME(header_name) \
static constexpr uint64_t Hash = Pistache::Http::Header::detail::hash(header_name); \
uint64_t hash() const { return Hash; } \
uint64_t hash() const override { return Hash; } \
static constexpr const char *Name = header_name; \
const char *name() const { return Name; }
const char *name() const override { return Name; }
#else
#define NAME(header_name) \
static constexpr const char *Name = header_name; \
const char *name() const { return Name; }
const char *name() const override { return Name; }
#endif
// 3.5 Content Codings
......@@ -135,8 +135,8 @@ public:
methods_.push_back(method);
}
void parseRaw(const char *str, size_t len);
void write(std::ostream& os) const;
void parseRaw(const char *str, size_t len) override;
void write(std::ostream& os) const override;
void addMethod(Http::Method method);
void addMethods(std::initializer_list<Method> methods);
......@@ -156,8 +156,8 @@ public:
: mediaRange_()
{ }
void parseRaw(const char *str, size_t len);
void write(std::ostream& os) const;
void parseRaw(const char *str, size_t len) override;
void write(std::ostream& os) const override;
const std::vector<Mime::MediaType> media() const { return mediaRange_; }
......@@ -180,8 +180,8 @@ public:
: uri_(uri)
{ }
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
void setUri(std::string uri) {
uri_ = std::move(uri);
......@@ -208,8 +208,8 @@ public:
: val_(val)
{ }
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
void setUri(std::string val) {
val_ = std::move(val);
......@@ -235,7 +235,7 @@ public:
explicit CacheControl(Http::CacheDirective directive);
void parseRaw(const char* str, size_t len);
void write(std::ostream& os) const;
void write(std::ostream& os) const override;
std::vector<Http::CacheDirective> directives() const { return directives_; }
......@@ -259,7 +259,7 @@ public:
{ }
void parseRaw(const char* str, size_t len);
void write(std::ostream& os) const;
void write(std::ostream& os) const override;
ConnectionControl control() const { return control_; }
......@@ -275,7 +275,7 @@ public:
{ }
void parseRaw(const char* str, size_t len);
void write(std::ostream& os) const;
void write(std::ostream& os) const override;
Encoding encoding() const {
return encoding_;
......@@ -328,8 +328,8 @@ public:
: value_(val)
{ }
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
uint64_t value() const { return value_; }
......@@ -350,7 +350,7 @@ public:
{ }
void parseRaw(const char* str, size_t len);
void write(std::ostream& os) const;
void write(std::ostream& os) const override;
Mime::MediaType mime() const { return mime_; }
void setMime(const Mime::MediaType& mime) { mime_ = mime; }
......@@ -372,8 +372,8 @@ public:
: fullDate_(date)
{ }
void parse(const std::string &str);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
FullDate fullDate() const { return fullDate_; }
......@@ -394,7 +394,7 @@ public:
{ }
void parseRaw(const char* str, size_t len);
void write(std::ostream& os) const;
void write(std::ostream& os) const override;
Http::Expectation expectation() const { return expectation_; }
......@@ -417,8 +417,8 @@ public:
, port_(port)
{ }
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
std::string host() const { return host_; }
Port port() const { return port_; }
......@@ -438,8 +438,8 @@ public:
explicit Location(const std::string& location);
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
std::string location() const { return location_; }
......@@ -459,8 +459,8 @@ public:
explicit Server(const std::string& token);
explicit Server(const char* token);
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
std::vector<std::string> tokens() const { return tokens_; }
private:
......@@ -483,8 +483,8 @@ public:
ua_(ua)
{ }
void parse(const std::string& data);
void write(std::ostream& os) const;
void parse(const std::string& data) override;
void write(std::ostream& os) const override;
void setAgent(std::string ua) {
ua_ = std::move(ua);
......
......@@ -160,7 +160,7 @@ private:
LowercaseHash,
LowercaseEqual>;
void registerHeader(std::string name, RegistryFunc func);
void registerHeader(const std::string& name, RegistryFunc func);
RegistryStorageType registry;
};
......
......@@ -4,12 +4,13 @@
Headers registry
*/
#include <unordered_map>
#include <iterator>
#include <stdexcept>
#include <pistache/http_headers.h>
#include <memory>
#include <stdexcept>
#include <unordered_map>
#include <vector>
namespace Pistache {
namespace Http {
namespace Header {
......@@ -50,7 +51,7 @@ Registry::~Registry()
{}
void
Registry::registerHeader(std::string name, Registry::RegistryFunc func)
Registry::registerHeader(const std::string& name, Registry::RegistryFunc func)
{
auto it = registry.find(name);
if (it != std::end(registry)) {
......
#include "gtest/gtest.h"
#include <chrono>
#include <pistache/http_headers.h>
#include <pistache/date.h>
#include "gtest/gtest.h"
#include <algorithm>
#include <chrono>
using namespace Pistache::Http;
class TestHeader : public Header::Header {
public:
NAME("TestHeader");
void write(std::ostream& os) const override {
os << "TestHeader";
}
};
TEST(headers_test, accept) {
Header::Accept a1;
a1.parse("audio/*; q=0.2");
......@@ -286,3 +297,16 @@ TEST(headers_test, access_control_allow_headers_test)
allowHeaders.parse("Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
ASSERT_EQ(allowHeaders.val(), "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
}
TEST(headers_test, add_new_header_test)
{
const std::string headerName = "TestHeader";
ASSERT_FALSE(Header::Registry::instance().isRegistered(headerName));
Header::Registry::instance().registerHeader<TestHeader>();
ASSERT_TRUE(Header::Registry::instance().isRegistered(headerName));
const auto& headersList = Header::Registry::instance().headersList();
const bool isFound = std::find(headersList.begin(), headersList.end(), headerName) != headersList.end();
ASSERT_TRUE(isFound);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment