2 // Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 // Official repository: https://github.com/boostorg/beast
10 #ifndef BOOST_BEAST_HTTP_IMPL_VERB_IPP
11 #define BOOST_BEAST_HTTP_IMPL_VERB_IPP
13 #include <boost/beast/core/detail/config.hpp>
14 #include <boost/throw_exception.hpp>
23 template<class = void>
26 verb_to_string(verb v)
30 case verb::delete_: return "DELETE";
31 case verb::get: return "GET";
32 case verb::head: return "HEAD";
33 case verb::post: return "POST";
34 case verb::put: return "PUT";
35 case verb::connect: return "CONNECT";
36 case verb::options: return "OPTIONS";
37 case verb::trace: return "TRACE";
39 case verb::copy: return "COPY";
40 case verb::lock: return "LOCK";
41 case verb::mkcol: return "MKCOL";
42 case verb::move: return "MOVE";
43 case verb::propfind: return "PROPFIND";
44 case verb::proppatch: return "PROPPATCH";
45 case verb::search: return "SEARCH";
46 case verb::unlock: return "UNLOCK";
47 case verb::bind: return "BIND";
48 case verb::rebind: return "REBIND";
49 case verb::unbind: return "UNBIND";
50 case verb::acl: return "ACL";
52 case verb::report: return "REPORT";
53 case verb::mkactivity: return "MKACTIVITY";
54 case verb::checkout: return "CHECKOUT";
55 case verb::merge: return "MERGE";
57 case verb::msearch: return "M-SEARCH";
58 case verb::notify: return "NOTIFY";
59 case verb::subscribe: return "SUBSCRIBE";
60 case verb::unsubscribe: return "UNSUBSCRIBE";
62 case verb::patch: return "PATCH";
63 case verb::purge: return "PURGE";
65 case verb::mkcalendar: return "MKCALENDAR";
67 case verb::link: return "LINK";
68 case verb::unlink: return "UNLINK";
74 BOOST_THROW_EXCEPTION(std::invalid_argument{"unknown verb"});
77 template<class = void>
79 string_to_verb(string_view v)
117 return verb::unknown;
118 // s must be null terminated
120 [](string_view sv, char const* s)
130 return p == sv.end();
154 return verb::checkout;
159 return verb::connect;
162 BOOST_BEAST_FALLTHROUGH;
171 return verb::delete_;
198 return verb::msearch;
207 if(eq(v, "ACTIVITY"))
208 return verb::mkactivity;
213 return verb::mkcalendar;
223 BOOST_BEAST_FALLTHROUGH;
237 return verb::options;
257 return verb::propfind;
259 return verb::proppatch;
267 BOOST_BEAST_FALLTHROUGH;
287 if(eq(v, "UBSCRIBE"))
288 return verb::subscribe;
306 if(eq(v, "SUBSCRIBE"))
307 return verb::unsubscribe;
314 return verb::unknown;
323 return detail::verb_to_string(v);
328 string_to_verb(string_view s)
330 return detail::string_to_verb(s);