-
Notifications
You must be signed in to change notification settings - Fork 0
Implementation of a HTTP module
fxnabes edited this page Mar 1, 2019
·
3 revisions
HelloWorldModule.hpp
#pragma once
#include "zia/api/IHttpModule.hpp"
#include "zia/api/IModuleDescriptor.hpp"
class HelloWorldModule : public zia::api::IHttpModule {
public:
HelloWorldModule() = default;
void loadConfiguration(
std::unordered_map<std::string, std::string> const &config) override;
zia::api::HookResult onRequest(zia::http::IRequest &request,
zia::http::IResponse &response) override;
zia::api::HookResult onProcess(zia::http::IRequest &request,
zia::http::IResponse &response) override;
zia::api::HookResult onResponse(zia::http::IRequest &request,
zia::http::IResponse &response) override;
};
class HelloWorldModuleDescriptor : public zia::api::IModuleDescriptor {
public:
HelloWorldModuleDescriptor() = default;
zia::api::ModuleType getType() const override
{
return _type;
}
const std::string &getName() const override
{
return _name;
}
const std::vector<zia::api::ConfigKey> &getConfigKeys() const override
{
return _configKey;
}
std::unique_ptr<zia::api::IModule> create() override
{
return std::make_unique<HelloWorldModule>();
}
private:
static const zia::api::ModuleType _type = zia::api::ModuleType::Http;
static const std::string _name;
static const std::vector<zia::api::ConfigKey> _configKey;
};HelloWorldModule.cpp
#include "HelloWorldModule.hpp"
void HelloWorldModule::loadConfiguration(
std::unordered_map<std::string, std::string> const &)
{
// If your module needs configuration
}
zia::api::HookResult HelloWorldModule::onRequest(zia::http::IRequest &,
zia::http::IResponse &)
{
return zia::api::HookResult::Declined;
}
zia::api::HookResult HelloWorldModule::onProcess(zia::http::IRequest &,
zia::http::IResponse &response)
{
zia::http::Buffer buff("Hello world");
response.setBody(buff);
return zia::api::HookResult::Ok;
}
zia::api::HookResult HelloWorldModule::onResponse(
zia::http::IRequest &, zia::http::IResponse &)
{
//
return zia::api::HookResult::Declined;
}
extern "C" {
HelloWorldModuleDescriptor descriptor;
}
const std::string HelloWorldModuleDescriptor::_name = std::string("HelloWorld");
const std::vector<zia::api::ConfigKey> HelloWorldModuleDescriptor::_configKey = {};