Исходник http_url_handler (Parser & builder for URL's)

Receiver

leet-cheats 👑
Автор темы
Проверенный
624
892
Описание: Удобный C++ враппер, парсер и билдер для URL-ссылок. Использует библиотеку http-parser для парсинга. Я устанавливал через vcpkg, вы можете собрать сами. В нём есть 2 класса: net::http::url - отвечает за парсинг и билдинг ссылок и net::http::url_parser - отвечает только за парсинг, минимально использует память.

Парсинг ссылок:
C++:
net::http::url url{"https://user@host:8080/path?query=value#fragment"}; // Парсим ссылку (только в этом конструкторе к работе подключается парсер)
std::cout << url.host() << std::endl; // Выводим домен
std::cout << url.str() << std::endl; // Билдим ссылку и выводим

Билдинг ссылок с нуля:
C++:
net::http::url url{}; // Создаём пустой объект
url.schema("https"); // Заполняем этот объект
url.user_info("user");
url.host("host");
url.port(8080);
url.path("/path");
url.query("query=value");
url.fragment("fragment");
std::cout << url.str() << std::endl; // Билдим ссылку и выводим

Парсинг URL запроса:
C++:
auto query = net::http::parse_query(url.query()); // Парсим URL запрос, возвращает std::map
for (auto& [key, value] : query) {
  // ...
}
Репозиторий (Исходник):
 
Последнее редактирование:

reussssya

Новичок
28
8
Парсером можно любую информацию взять с сайта, я ведь правильно понимаю?
 

Receiver

leet-cheats 👑
Автор темы
Проверенный
624
892
Парсером можно любую информацию взять с сайта, я ведь правильно понимаю?
Нет, это только парсер URL. Он разбирает ссылку на составляющие.

Changelog:
  • Исправлено неопределённое поведение
  • Добавлено копирование и перемещение
  • Добавлено копирование в url из url_parser
  • Указатели заменены class forward declaration
Спасибо https://www.blast.hk/members/269079/ за помощь!
 
Последнее редактирование:
  • Вау
Реакции: reussssya