Re[4]: v.0.5.0: возможность работы с кастомными версиями http-parser
От: Denis Ivlev  
Дата: 04.06.19 16:40
Оценка: -1
Здравствуйте, so5team, Вы писали:

S>Да вы своим ослоумием и "полезными" комментариями здесь резко выделяетесь, так что продолжайте. Публике нужны развлечения.


А что ты так завелся? Ты же искал своей поделке внимание — ну так вот оно, что не так? кстати, интересно за "ослоумие" тебя забанят или ты и есть специальный шут, которому позволительно хамить?
Re[5]: v.0.5.0: возможность работы с кастомными версиями http-parser
От: so5team https://stiffstream.com
Дата: 04.06.19 16:44
Оценка:
Здравствуйте, Denis Ivlev, Вы писали:

DI>А что ты так завелся?


Кто завелся?

DI>Ты же искал своей поделке внимание — ну так вот оно, что не так?


Идиотский комментарий от человека, уже успевшего себя зарекомендовать специфическим образом.

В двух словаях: не каждый фидбэк одинаково полезен.

DI> кстати, интересно за "ослоумие" тебя забанят или ты и есть специальный шут, которому позволительно хамить?


А вы пожалуйстесь модератору, посмотрите, что получится.
Re[6]: v.0.5.0: возможность работы с кастомными версиями http-parser
От: Denis Ivlev  
Дата: 04.06.19 16:50
Оценка: -1
Здравствуйте, so5team, Вы писали:

S>Идиотский комментарий от человека, уже успевшего себя зарекомендовать специфическим образом.


Хочу работать над собой, покажи пожалуйста тройку комментариев, чтобы я подумал над своим поведением. Я без приколов. Спасибо.
Re: Версия 0.6.0
От: so5team https://stiffstream.com
Дата: 30.08.19 07:29
Оценка: 2 (1)
Выпущена новая версия RESTinio.

Со времени последнего анонса в RESTinio произошли следующие изменения:

* добавлено понятие connection state listener-а. В версии 0.6.0 для connection state listener добавлена возможность получить доступ к параметрам TLS-соединения;
* добавлено понятие IP-blocker-а;
* обновлены зависимости: Asio 1.14.0 (Asio 1.12 так же поддерживается), optional-lite 3.2.0, variant-lite 1.2.2. Добавлена поддержка fmtlib-6.0.0, но сам RESTinio пока использует fmtlib-5.3.0;
* добавлены макросы RESTINIO_VERSION, RESTINIO_VERSION_MAJOR, RESTINIO_VERSION_MINOR, RESTINIO_VERSION_PATCH, RESTINIO_VERSION_MAKE.

Версия 0.6.0 ломает совместимость с версией 0.5 в части API для connection state listener-ов. Поэтому при переходе на 0.6.0 может потребоваться правка кода, использующего RESTinio.

Разработка RESTinio теперь ведется только на GitHub, оттуда же можно забрать свежую версию. RESTinio-0.6.0 так же доступна через Conan и vcpkg.

Документация по версии 0.6 доступна здесь (руководство программиста) и здесь (справочник по API).

Можно отметить, что такие вещи, как connection state listener и IP-blocker, изначально не предполагались. Они были добавлены в RESTinio по просьбам пользователей. Так что если вам чего-то не хватает в RESTinio, то дайте нам об этом знать. Либо через Issues на GitHub-е, либо через Google-группу.
Re: RESTinio 0.6.1
От: so5team https://stiffstream.com
Дата: 20.11.19 06:07
Оценка:
Выпущена новая версия RESTinio.

Со времени последнего анонса в RESTinio произошли следующие изменения:

* начато добавление средств для парсинга содержимого HTTP-полей. Пока поддерживается всего несколько HTTP-полей, но эта работа будет продолжена в будущих версиях RESTinio;
* добавлены вспомогательные инструменты для работы с multipart телами запросов;
* добавлены вспомогательные инструменты для реализации загрузки файлов на сервер;
* в состав штатных примеров добавлен file_upload;

Разработка RESTinio теперь ведется только на GitHub, оттуда же можно забрать свежую версию. RESTinio-0.6.1 так же доступна через Conan и vcpkg.

Документация по версии 0.6 доступна здесь (руководство программиста) и здесь (справочник по API).

Мы внимательно прислушиваемся к замечаниям и просьбам пользователей. Например, функциональность для поддержки file upload появилась в результате такой просьбы. Так что если вам чего-то не хватает в RESTinio, то дайте нам об этом знать. Либо через Issues на GitHub-е, либо через Google-группу.
Re: RESTinio 0.6.6
От: so5team https://stiffstream.com
Дата: 16.04.20 12:13
Оценка: 4 (1)
Намедни мы выкатили очередную версию 0.6.6, в которой, среди улучшений и исправлений, следует отметить две новых фичи.

Самая простая из них – это возможность повесить один обработчик сразу для нескольких методов при обращении к одному ресурсу. Например:
// Обработчик будет вызван для методов LOCK и UNLOCK.
router->add_handler(
   restinio::router::any_of_methods(
      restinio::http_method_lock(), restinio::http_method_unlock()),
   "/api/v1/resources/:rid",
   [](const auto & req, const auto & params) {...});

// Обработчик будет вызван для всех методов за исключением GET, POST и DELETE.
router->add_handler(
   restinio::router::none_of_methods(
      restinio::http_method_get(),
      restinio::http_method_post(),
      restinio::http_method_delete()),
   "/api/v1/users/:user",
   [](const auto & req, const auto & params) {...});

Но самое важное нововведение – это новый безопасный по типам роутер запросов, который может использоваться вместо привычного express-роутера. При этом новый роутер использует возможности C++ для выявления в compile-time ошибок, которые при использовании express-роутера проявляются только в run-time.

Новый роутер позволяет записать маршрут вот так:
namespace epr = restinio::router::easy_parser_router;
router->http_get(
   epr::path_to_params("/api/v1/posts/",
      epr::non_negative_decimal_number_p<std::uint64_t>(),
      "/revisions/",
      epr::non_negative_decimal_number_p<std::int16_t>()),
   [](const auto & req, std::uint64_t post_id, std::int16_t rev_id) {...});

тогда как в express-роутере этот же маршрут может описываться, например, так:
router->http_get("/api/v1/posts/:post_id(\d{1,10})/revisions/:rev_id(\d{1,5})",
   [](const auto & req, const auto & params) {
      const auto post_id = restinio::cast_to<std::uint64_t>(params["post_id"]);
      const auto rev_id = restinio::cast_to<std::int16_t>(params["rev_id"]);
   });

На Хабре можно найти статью, которая раскрывает тему нового роутера и некоторых деталей его реализации более подробно.

Взять и попробовать RESTinio можно с GitHub-а. Так же RESTinio доступен через Conan и vcpkg.
Отредактировано 16.04.2020 19:18 so5team . Предыдущая версия .
Re: RESTinio 0.6.7.1
От: so5team https://stiffstream.com
Дата: 12.05.20 16:59
Оценка:
Выпустили очередное обновление для RESTinio. В версии 0.6.7.1, кроме нескольких баг-фиксов, добавились:

Дополнительные опции для настройки CMake-сборок: RESTINIO_USE_EXTERNAL_EXPECTED_LITE, RESTINIO_USE_EXTERNAL_OPTIONAL_LITE, RESTINIO_USE_EXTERNAL_STRING_VIEW_LITE, RESTINIO_USE_EXTERNAL_VARIANT_LITE.

Вспомогательная функция run_async для упрощения запуска RESTinio-сервера на отдельном пуле потоков или отдельной рабочей нити:

int main() {
   auto server = restinio::run_async(
      // Задаем io_context для использования.
      // В данном случае у сервера будет собственный io_context.
      restinio::own_io_context(),
      // Параметры для HTTP-сервера.
      restinio::server_settings_t{}
         .address("127.0.0.1")
         .port(8080)
         .request_handler(...),
      // Размер пула рабочих нитей для HTTP-сервера.
      16);
   // Если оказались здесь и run_async не выбросил исключения,
   // значит HTTP-сервера запущен.

   ... // Какие-то другие действия.

   // Здесь нет необходимости останавливать HTTP-сервер
   // вручную, это будет сделано автоматически в
   // деструкторе переменной 'server'.
}


Добавлены новые вспомогательные функции для работа значений HTTP-заголовков. На этот раз заголовков Authorization и Proxy-Authorization.

Так же добавлены вспомогательные функции для извлечения из Authorization параметров для Basic и Bearer аутентификаций. Например, для Basic-аутентификации:

#include <restinio/all.hpp>
#include <restinio/http_field_parser/basic_auth.hpp>
...
auto on_request(const restinio::request_handle_t & req) {
   using namespace restinio::http_field_parsers::basic_auth;
   const auto auth_params = try_extract_params(*req,
         restinio::http_field::authorization);
   if(auth_params) { // Параметры успешно извлечены.
      if(is_valid_user(auth_params->username, auth_params->password)) {
         ...
      }
   }
   ...
}
Re: RESTinio 0.6.13
От: so5team https://stiffstream.com
Дата: 29.12.20 08:52
Оценка: 3 (1)
Вышел очередной релиз RESTinio, о котором можно рассказать, потому что в свежей версии 0.6.13 появилось парочка новых и важных фич.

Первая фича -- это возможность провязать несколько обработчиков в цепочку. Какое-то приближение к middleware из EpressJS. При получении нового запроса обработчики из цепочки будут вызываться последовательно. Тем самым каждый обработчик может отвечать только за свою операцию (логирование параметров запроса, проверка значений в HTTP-заголовках, аутентификация и т.д.) и нужная приложению функциональность набирается посредством формирования соответствующей цепочки обработчиков.

Вторая фича, которая очень нужна для вышеупомянутых цепочек, -- это возможность внедрить объект нужного пользователю типа в объект-запрос, который создается внутри RESTinio при получении нового входящего запроса. Такой объект может использоваться для передачи дополнительной информации от одной стадии обработки запроса к другой.

Более подробно все это описано в статье на Хабре. Там же изложены и некоторые соображения о том, куда RESTinio может двигаться дальше.

Так же хочется поблагодарить всех, кто проявил конструктивный интерес к RESTinio и, особенно, тех, кто рискнул и применил RESTinio у себя. Конечно же, отдельное спасибо тем, кто нашел возможность и время поделиться с нами своими впечатлениями, соображениями и обнаруженными недостатками.
Re: RESTinio 0.7.0
От: so5team https://stiffstream.com
Дата: 13.11.23 13:18
Оценка: +2
Библиотека RESTinio обновилась до версии 0.7.0.

Для тех, кто про RESTinio слышит впервые: это небольшая C++ библиотека для встраивания в C++ приложения HTTP(s)/WebSocket сервера (только сервера, HTTP-клиента в RESTinio нет). Распространяется под лицензией BSD-3-CLAUSE.

Сама библиотека header-only вследствие активного использования шаблонов (в том числе трех- и более этажных), но зависит от библиотек, которые нуждаются в компиляции. В качестве зависимостей используются fmtlib, nodejs/llhttp, expected-lite и Asio (как standalone, так и Boost.Asio).

Кратко про изменения в версии 0.7.0:

* теперь нужен C++17;
* теперь используется nodejs/llhttp вместо оставшегося без поддержки nodejs/http-parser;
* переделаны CMake-скрипты. Теперь для конфигурирования используется новый набор CMake-овских опций/переменных.
* добавлена возможность выстраивать цепочки асинхронных обработчиков. В версии 0.6.13 были добавлены цепочки синхронных обработчиков, теперь еще и асинхронные поддерживаются. Цепочки обработчиков -- это что-то вроде middleware из EpressJS;
* выброшены некоторые классы/методы/функции, которые ранее были помечены как deprecated.

Более подробно изменения описаны в этой статье на Хабре.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.