172 похожих чатов

Господа, кто с варпом работал, подскажите пж. Хочу создать фильтр, который

бы проверял Authorization header. Мне нужно, чтобы в случае неверного ключа возвращалась 403. Думаю, что это частая проблема.
С этим проблемы большой нет, но информацию с ключа я не хочу передавать в метод.
Пришел к чему то такому:
fn require_secret() -> impl Filter<Extract = ((), ), Error = Rejection> + Copy {
warp::header("Authorization").map(|x: Secret| {
if x.secret == SECRET {
Ok(())
} else {
Err(warp::reject::custom(Forbidden))
}
})
}

Получается, что описание метода в варпе будет таким:
let method = warp::post("path")
.and(require_secret)
.recover(recovery_func)
.and_then(method_func);

И в method_func мне придется передавать юнит тайп вот так:
async fn method_func(garbage: ()) -> ...

Как этого можно было бы избежать?
Никак не могу найти способа возвращать "ничего" из фильтра, как делает warp::any().

5 ответов

5 просмотров

Разобрался: fn require_secret() -> impl Filter<Extract = (), Error = Rejection> + Copy { warp::header("Authorization").and_then(|x: Secret| async move{ if x.secret == SECRET { Ok(()) } else { Err(warp::reject::custom(Forbidden)) } }) .untuple_one() }

Αλεχ Zhukovsky
А готовой мидлавари там нет что ли?

Может быть где то в tower лежит, но в самом варпе я не видел

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Всем здравствуйте!) У меня такой вопрос. Есть два роута, роут1 и роут2. Они связаны с очередью some_queue. По задаче предполагается, что есть два паблиша. Паблиш1 отправляет...
Format
10
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Добрый день! Хочу спросить совета. Хочется в скрипт добавить некую конструкцию, что скрипт создал файл, который нужно потом скопировать в определенное место. Нашел такой сп...
Mikhail
4
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
in telegram can i have multiple username? so instead of having multiple account for example one for work, one for friend and one for family with three diff numbers. using one ...
Mr Thieves
6
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
Карта сайта