//! \~\file piserverendpoint_p.h
//! \~\ingroup HTTP
//! \~\brief
//! \~english Shared HTTP message container types
//! \~russian Общие типы контейнеров HTTP-сообщений
/*
PIP - Platform Independent Primitives
Shared HTTP message container types
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see .
*/
#ifndef piserverendpoint_p_h
#define piserverendpoint_p_h
#include "pip_export.h"
#include "pistringlist.h"
namespace PIHTTP {
struct PIP_EXPORT ServerEndpoint {
struct PIP_EXPORT PathElement {
enum class Type {
Invalid = 0x01,
Fixed = 0x02,
Arguments = 0x04,
AnyOne = 0x08,
AnyPart = 0x10,
AnyMany = 0x20
};
Type type = Type::Fixed;
PIString source;
PIStringList parts;
PIMap arguments;
PathElement(const PIString & reg = {});
bool match(const PIString & in, PIMap & ext_args) const;
uint priority() const;
};
PIStringList path;
PIFlags path_types;
PIVector prepared_path;
uint priority = 0;
bool create(const PIString & p);
bool match(const PIStringList & in_path, PIMap & ext_args) const;
static PIStringList splitPath(const PIString & path);
};
}; // namespace PIHTTP
#endif