forked from boostorg/beast
147 lines
3.4 KiB
C++
147 lines
3.4 KiB
C++
|
|
//
|
||
|
|
// Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
|
||
|
|
//
|
||
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||
|
|
//
|
||
|
|
|
||
|
|
#ifndef BEAST_HTTP_VERB_HPP
|
||
|
|
#define BEAST_HTTP_VERB_HPP
|
||
|
|
|
||
|
|
#include <beast/config.hpp>
|
||
|
|
#include <beast/core/string_view.hpp>
|
||
|
|
#include <boost/optional.hpp>
|
||
|
|
#include <ostream>
|
||
|
|
|
||
|
|
namespace beast {
|
||
|
|
namespace http {
|
||
|
|
|
||
|
|
/** HTTP request method verbs
|
||
|
|
|
||
|
|
Each verb corresponds to a particular method string
|
||
|
|
used in HTTP request messages.
|
||
|
|
*/
|
||
|
|
enum class verb
|
||
|
|
{
|
||
|
|
/// The DELETE method deletes the specified resource
|
||
|
|
delete_ = 1,
|
||
|
|
|
||
|
|
/** The GET method requests a representation of the specified resource.
|
||
|
|
|
||
|
|
Requests using GET should only retrieve data and should have no other effect.
|
||
|
|
*/
|
||
|
|
get,
|
||
|
|
|
||
|
|
/** The HEAD method asks for a response identical to that of a GET request, but without the response body.
|
||
|
|
|
||
|
|
This is useful for retrieving meta-information written in response
|
||
|
|
headers, without having to transport the entire content.
|
||
|
|
*/
|
||
|
|
head,
|
||
|
|
|
||
|
|
/** The POST method requests that the server accept the entity enclosed in the request as a new subordinate of the web resource identified by the URI.
|
||
|
|
|
||
|
|
The data POSTed might be, for example, an annotation for existing
|
||
|
|
resources; a message for a bulletin board, newsgroup, mailing list,
|
||
|
|
or comment thread; a block of data that is the result of submitting
|
||
|
|
a web form to a data-handling process; or an item to add to a database
|
||
|
|
*/
|
||
|
|
post,
|
||
|
|
|
||
|
|
/** The PUT method requests that the enclosed entity be stored under the supplied URI.
|
||
|
|
|
||
|
|
If the URI refers to an already existing resource, it is modified;
|
||
|
|
if the URI does not point to an existing resource, then the server
|
||
|
|
can create the resource with that URI.
|
||
|
|
*/
|
||
|
|
put,
|
||
|
|
|
||
|
|
/** The CONNECT method converts the request connection to a transparent TCP/IP tunnel.
|
||
|
|
|
||
|
|
This is usually to facilitate SSL-encrypted communication (HTTPS)
|
||
|
|
through an unencrypted HTTP proxy.
|
||
|
|
*/
|
||
|
|
connect,
|
||
|
|
|
||
|
|
/** The OPTIONS method returns the HTTP methods that the server supports for the specified URL.
|
||
|
|
|
||
|
|
This can be used to check the functionality of a web server by requesting
|
||
|
|
'*' instead of a specific resource.
|
||
|
|
*/
|
||
|
|
options,
|
||
|
|
|
||
|
|
/** The TRACE method echoes the received request so that a client can see what (if any) changes or additions have been made by intermediate servers.
|
||
|
|
*/
|
||
|
|
trace,
|
||
|
|
|
||
|
|
// WebDAV
|
||
|
|
|
||
|
|
copy,
|
||
|
|
lock,
|
||
|
|
mkcol,
|
||
|
|
move,
|
||
|
|
propfind,
|
||
|
|
proppatch,
|
||
|
|
search,
|
||
|
|
unlock,
|
||
|
|
bind,
|
||
|
|
rebind,
|
||
|
|
unbind,
|
||
|
|
acl,
|
||
|
|
|
||
|
|
// subversion
|
||
|
|
|
||
|
|
report,
|
||
|
|
mkactivity,
|
||
|
|
checkout,
|
||
|
|
merge,
|
||
|
|
|
||
|
|
// upnp
|
||
|
|
|
||
|
|
msearch,
|
||
|
|
notify,
|
||
|
|
subscribe,
|
||
|
|
unsubscribe,
|
||
|
|
|
||
|
|
// RFC-5789
|
||
|
|
|
||
|
|
patch,
|
||
|
|
purge,
|
||
|
|
|
||
|
|
// CalDAV
|
||
|
|
|
||
|
|
mkcalendar,
|
||
|
|
|
||
|
|
// RFC-2068, section 19.6.1.2
|
||
|
|
|
||
|
|
link,
|
||
|
|
unlink
|
||
|
|
};
|
||
|
|
|
||
|
|
/** Converts a string to the request method verb.
|
||
|
|
|
||
|
|
If the string does not match a known request method,
|
||
|
|
`boost::none` is returned.
|
||
|
|
*/
|
||
|
|
boost::optional<verb>
|
||
|
|
string_to_verb(string_view s);
|
||
|
|
|
||
|
|
/// Returns the text representation of a request method verb.
|
||
|
|
string_view
|
||
|
|
to_string(verb v);
|
||
|
|
|
||
|
|
/// Write the text for a request method verb to an output stream.
|
||
|
|
inline
|
||
|
|
std::ostream&
|
||
|
|
operator<<(std::ostream& os, verb v)
|
||
|
|
{
|
||
|
|
return os << to_string(v);
|
||
|
|
}
|
||
|
|
|
||
|
|
} // http
|
||
|
|
} // beast
|
||
|
|
|
||
|
|
#include <beast/http/impl/verb.ipp>
|
||
|
|
|
||
|
|
#endif
|