Malloy
Toggle main menu visibility
Loading...
Searching...
No Matches
lib
malloy
core
html
form.hpp
1
#pragma once
2
3
#include "form_data.hpp"
4
#include "form_field.hpp"
5
#include "../http/request.hpp"
6
7
#include <optional>
8
#include <string>
9
#include <vector>
10
11
namespace
malloy::html
12
{
13
22
class
form
23
{
24
public
:
28
enum class
encoding
29
{
30
url,
31
multipart,
32
plain,
33
};
34
42
form
(
43
http::method
method
,
44
std::string
action
,
45
encoding
enc
46
);
47
51
virtual
52
~form
() =
default
;
53
59
[[nodiscard]]
60
http::method
61
method
() const noexcept
62
{
63
return
m_method;
64
}
65
71
[[nodiscard]]
72
std::string_view
73
action
() const noexcept
74
{
75
return
m_action;
76
}
77
83
[[nodiscard]]
84
encoding
85
get_encoding
() const noexcept
86
{
87
return
m_encoding;
88
}
89
95
[[nodiscard]]
96
static
97
std::string_view
98
encoding_to_string
(
encoding
enc);
99
105
[[nodiscard]]
106
std::string_view
107
encoding_to_string
()
const
108
{
109
return
encoding_to_string
(m_encoding);
110
}
111
119
[[nodiscard]]
120
static
121
std::optional<encoding>
122
encoding_from_string
(std::string_view str);
123
129
[[nodiscard]]
130
std::vector<form_field>
131
fields
() const noexcept
132
{
133
return
m_fields;
134
}
135
145
bool
146
add_field
(
form_field
&& field);
147
154
bool
155
has_field
(std::string_view field_name)
const
;
156
169
void
170
populate
(
const
form_data
& data);
171
175
void
176
clear_values
();
177
186
// ToDo: Move this outside of this class
187
[[nodiscard]]
188
static
189
std::optional<form_data>
190
parse
(
const
malloy::http::request<>
& req);
191
192
private
:
193
http::method
m_method;
194
std::string m_action;
195
encoding
m_encoding;
196
std::vector<form_field> m_fields;
197
204
[[nodiscard]]
205
form_field
&
206
field_from_name(std::string_view field_name);
207
214
[[nodiscard]]
215
const
form_field
&
216
field_from_name(std::string_view field_name)
const
;
217
218
[[nodiscard]]
219
static
220
std::optional<form_data>
221
parse_urlencoded(
const
malloy::http::request<>
& req);
222
223
[[nodiscard]]
224
static
225
std::optional<form_data>
226
parse_multipart(
const
malloy::http::request<>
& req);
227
228
[[nodiscard]]
229
static
230
std::optional<form_data>
231
parse_plain(
const
malloy::http::request<>
& req);
232
};
233
234
}
malloy::html::form_data
Definition
form_data.hpp:19
malloy::html::form::form
form(http::method method, std::string action, encoding enc)
Definition
form.cpp:12
malloy::html::form::method
http::method method() const noexcept
Definition
form.hpp:61
malloy::html::form::clear_values
void clear_values()
Definition
form.cpp:135
malloy::html::form::~form
virtual ~form()=default
malloy::html::form::action
std::string_view action() const noexcept
Definition
form.hpp:73
malloy::html::form::encoding_to_string
std::string_view encoding_to_string() const
Definition
form.hpp:107
malloy::html::form::fields
std::vector< form_field > fields() const noexcept
Definition
form.hpp:131
malloy::html::form::get_encoding
encoding get_encoding() const noexcept
Definition
form.hpp:85
malloy::html::form::has_field
bool has_field(std::string_view field_name) const
Definition
form.cpp:107
malloy::html::form::encoding_from_string
static std::optional< encoding > encoding_from_string(std::string_view str)
Definition
form.cpp:72
malloy::html::form::add_field
bool add_field(form_field &&field)
Definition
form.cpp:91
malloy::html::form::encoding_to_string
static std::string_view encoding_to_string(encoding enc)
Definition
form.cpp:57
malloy::html::form::populate
void populate(const form_data &data)
Definition
form.cpp:121
malloy::html::form::encoding
encoding
Definition
form.hpp:29
malloy::html::form::parse
static std::optional< form_data > parse(const malloy::http::request<> &req)
Definition
form.cpp:142
malloy::http::request
Definition
request.hpp:19
malloy::html
Definition
form.hpp:12
malloy::http::method
boost::beast::http::verb method
Definition
types.hpp:18
malloy::html::form_field
Definition
form_field.hpp:31
Generated by
1.18.0