Simplify RestRequest struct.
This commit is contained in:
+6
-2
@@ -195,14 +195,18 @@ public:
|
||||
explicit Exception(Error error, const std::string& details = "",
|
||||
bool timeout = false);
|
||||
|
||||
Error error() const { return error_; }
|
||||
Error error() const {
|
||||
return error_;
|
||||
}
|
||||
|
||||
// Note that `noexcept` is required by GCC.
|
||||
const char* what() const WEBCC_NOEXCEPT override{
|
||||
return msg_.c_str();
|
||||
}
|
||||
|
||||
bool timeout() const { return timeout_; }
|
||||
bool timeout() const {
|
||||
return timeout_;
|
||||
}
|
||||
|
||||
private:
|
||||
Error error_;
|
||||
|
||||
@@ -20,11 +20,7 @@ void RestRequestHandler::HandleConnection(HttpConnectionPtr connection) {
|
||||
|
||||
const Url& url = http_request->url();
|
||||
|
||||
// TODO
|
||||
RestRequest rest_request{
|
||||
http_request,
|
||||
http_request->method(), http_request->content(), url.query()
|
||||
};
|
||||
RestRequest rest_request{ http_request };
|
||||
|
||||
// Get service by URL path.
|
||||
std::string path = "/" + url.path();
|
||||
|
||||
+23
-15
@@ -8,13 +8,16 @@ namespace webcc {
|
||||
|
||||
void RestListService::Handle(const RestRequest& request,
|
||||
RestResponse* response) {
|
||||
if (request.method == http::methods::kGet) {
|
||||
Get(UrlQuery(request.url_query_str), response);
|
||||
} else if (request.method == http::methods::kPost) {
|
||||
Post(request.content, response);
|
||||
const std::string& method = request.http->method();
|
||||
|
||||
if (method == http::methods::kGet) {
|
||||
Get(UrlQuery(request.http->url().query()), response);
|
||||
|
||||
} else if (method == http::methods::kPost) {
|
||||
Post(request.http->content(), response);
|
||||
|
||||
} else {
|
||||
LOG_ERRO("RestListService doesn't support '%s' method.",
|
||||
request.method.c_str());
|
||||
LOG_ERRO("RestListService doesn't support '%s' method.", method.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,17 +25,22 @@ void RestListService::Handle(const RestRequest& request,
|
||||
|
||||
void RestDetailService::Handle(const RestRequest& request,
|
||||
RestResponse* response) {
|
||||
if (request.method == http::methods::kGet) {
|
||||
Get(request.url_matches, UrlQuery(request.url_query_str), response);
|
||||
} else if (request.method == http::methods::kPut) {
|
||||
Put(request.url_matches, request.content, response);
|
||||
} else if (request.method == http::methods::kPatch) {
|
||||
Patch(request.url_matches, request.content, response);
|
||||
} else if (request.method == http::methods::kDelete) {
|
||||
const std::string& method = request.http->method();
|
||||
|
||||
if (method == http::methods::kGet) {
|
||||
Get(request.url_matches, UrlQuery(request.http->url().query()), response);
|
||||
|
||||
} else if (method == http::methods::kPut) {
|
||||
Put(request.url_matches, request.http->content(), response);
|
||||
|
||||
} else if (method == http::methods::kPatch) {
|
||||
Patch(request.url_matches, request.http->content(), response);
|
||||
|
||||
} else if (method == http::methods::kDelete) {
|
||||
Delete(request.url_matches, response);
|
||||
|
||||
} else {
|
||||
LOG_ERRO("RestDetailService doesn't support '%s' method.",
|
||||
request.method.c_str());
|
||||
LOG_ERRO("RestDetailService doesn't support '%s' method.", method.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-11
@@ -28,15 +28,6 @@ struct RestRequest {
|
||||
// Original HTTP request.
|
||||
HttpRequestPtr http;
|
||||
|
||||
// HTTP method (GET, POST, etc.).
|
||||
const std::string& method;
|
||||
|
||||
// Request content (JSON string).
|
||||
const std::string& content;
|
||||
|
||||
// Query string of the URL (only for GET).
|
||||
const std::string& url_query_str;
|
||||
|
||||
// Regex sub-matches of the URL (usually resource ID's).
|
||||
UrlMatches url_matches;
|
||||
};
|
||||
@@ -67,7 +58,7 @@ typedef std::shared_ptr<RestService> RestServicePtr;
|
||||
|
||||
class RestListService : public RestService {
|
||||
public:
|
||||
void Handle(const RestRequest& request, RestResponse* response) final;
|
||||
void Handle(const RestRequest& request, RestResponse* response) override;
|
||||
|
||||
protected:
|
||||
virtual void Get(const UrlQuery& query, RestResponse* response) {
|
||||
@@ -82,7 +73,7 @@ protected:
|
||||
|
||||
class RestDetailService : public RestService {
|
||||
public:
|
||||
void Handle(const RestRequest& request, RestResponse* response) final;
|
||||
void Handle(const RestRequest& request, RestResponse* response) override;
|
||||
|
||||
protected:
|
||||
virtual void Get(const UrlMatches& url_matches,
|
||||
|
||||
Reference in New Issue
Block a user