You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.3 KiB

3 days ago
#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <hv/HttpServer.h>
#include <QString>
class Controller
{
public:
/**
*
*/
virtual ~Controller() = default;
/**
* @brief className
* @return
*/
virtual const QString className() const { return "Controller"; }
/**
* @brief get GET
* @param req requset
* @param resp response
* @return http
*/
virtual int get(HttpRequest *req, HttpResponse *resp) { return methodNotMatch(req, resp); };
/**
* @brief post POST
* @param req requset
* @param resp response
* @return http
*/
virtual int post(HttpRequest *req, HttpResponse *resp) { return methodNotMatch(req, resp); };
/**
* @brief put PUT
* @param req requset
* @param resp response
* @return http
*/
virtual int put(HttpRequest *req, HttpResponse *resp) { return methodNotMatch(req, resp); };
/**
* @brief del DEL
* @param req requset
* @param resp response
* @return http
*/
virtual int del(HttpRequest *req, HttpResponse *resp) { return methodNotMatch(req, resp); };
/**
* @brief service
* @param req requset
* @param resp response
* @return http
*/
int service(HttpRequest *req, HttpResponse *resp)
{
if (HTTP_GET == req->method) {
return get(req, resp);
} else if (HTTP_POST == req->method) {
return post(req, resp);
} else if (HTTP_PUT == req->method) {
return put(req, resp);
} else if (HTTP_DELETE == req->method) {
return del(req, resp);
} else {
return methodNotMatch(req, resp);
}
}
protected:
/**
* @brief methodNotMatch
* @param req requset
* @param resp response
* @return 405-http
*/
int methodNotMatch(HttpRequest *req, HttpResponse *resp)
{
Q_UNUSED(req);
Q_UNUSED(resp);
return HTTP_STATUS_METHOD_NOT_ALLOWED;
}
};
#endif // CONTROLLER_H