8 #include <hilti/rt/exception.h> 9 #include <hilti/rt/extension-points.h> 10 #include <hilti/rt/types/result.h> 11 #include <hilti/rt/util.h> 18 HILTI_EXCEPTION(InvalidMIMEType, UserException)
22 constexpr
char INVALID_NAME[] =
"";
38 MIMEType(std::string_view main, std::string_view sub) : _main(main), _sub(sub) {}
57 if ( _main.empty() || _sub.empty() )
58 throw InvalidMIMEType(
hilti::rt::fmt(
"cannot parse MIME type '%s'", type));
76 bool isWildcard()
const {
return _main ==
"*" || _sub ==
"*"; }
114 }
catch (
const InvalidMIMEType& e ) {
119 friend bool operator==(
const MIMEType& a,
const MIMEType& b) {
return a._main == b._main && a._sub == b._sub; }
120 friend bool operator!=(
const MIMEType& a,
const MIMEType& b) {
return ! (a == b); }
132 void ensureValid()
const {
133 if ( _main == mime::INVALID_NAME || _sub == mime::INVALID_NAME )
134 throw InvalidMIMEType(
"MIME type is uninitialized");
137 std::string _main = mime::INVALID_NAME;
138 std::string _sub = mime::INVALID_NAME;
MIMEType(std::string_view main, std::string_view sub)
Definition: mime.h:38
static hilti::rt::Result< MIMEType > parse(const std::string &s)
Definition: mime.h:111
std::string mainType() const
Definition: mime.h:64
std::pair< std::string, std::string > split1(std::string s)
Definition: util.cc:156
bool isWildcard() const
Definition: mime.h:76
std::string asKey() const
Definition: mime.h:93
MIMEType(const std::string &type)
Definition: mime.h:47
Definition: deferred-expression.h:41
std::string_view trim(std::string_view s, const std::string &chars) noexcept
Definition: util.h:112
std::string subType() const
Definition: mime.h:70
std::string fmt(const char *fmt, const Args &... args)
Definition: fmt.h:13