Seastar
High performance C++ framework for concurrent servers
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
handlers.hh
1/*
2 * This file is open source software, licensed to you under the terms
3 * of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4 * distributed with this work for additional information regarding copyright
5 * ownership. You may not use this file except in compliance with the License.
6 *
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing,
12 * software distributed under the License is distributed on an
13 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 * KIND, either express or implied. See the License for the
15 * specific language governing permissions and limitations
16 * under the License.
17 */
18/*
19 * Copyright 2015 Cloudius Systems
20 */
21
22#pragma once
23
24#include <seastar/http/request.hh>
25#include <seastar/http/common.hh>
26#include <seastar/http/exception.hh>
27#include <seastar/http/reply.hh>
28
29
30namespace seastar {
31
32namespace httpd {
33
34typedef const http::request& const_req;
35
43 std::vector<sstring> _mandatory_param;
44protected:
45 handler_base() = default;
46 handler_base(const handler_base&) = default;
47public:
48 virtual ~handler_base() = default;
56 virtual future<std::unique_ptr<http::reply> > handle(const sstring& path,
57 std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep) = 0;
58
59
65 handler_base& mandatory(const sstring& param) {
66 _mandatory_param.push_back(param);
67 return *this;
68 }
69
75 void verify_mandatory_params(const http::request& req) const {
76 for (auto& param : _mandatory_param) {
77 if (req.get_query_param(param) == "") {
78 throw missing_param_exception(param);
79 }
80 }
81 }
82};
83
84}
85
86}
87
A representation of a possibly not-yet-computed value.
Definition: future.hh:1240
Definition: handlers.hh:42
void verify_mandatory_params(const http::request &req) const
Definition: handlers.hh:75
handler_base & mandatory(const sstring &param)
Definition: handlers.hh:65
virtual future< std::unique_ptr< http::reply > > handle(const sstring &path, std::unique_ptr< http::request > req, std::unique_ptr< http::reply > rep)=0
Definition: exception.hh:102
Seastar API namespace.
Definition: abort_on_ebadf.hh:26
Definition: request.hh:52
sstring get_query_param(const sstring &key) const
Definition: request.hh:115