Open catdarick opened 3 years ago
Но ведь велосипедить на учебном проекте никто не запрещал. И на данном этапе нам нужен не Request, а только Host, Path. Request формируется уже потом в модуле Logic.Request с учетом всех параметров, метода, порта и т.д. Единственный косяк, который я здесь вижу, это то что parseServer должна выполняться единожды, а не при каждом запросе, но это легкая функция и на производительность нисколько не влияет
Вызов этой функции как раз объединит работу двух функций: parseServer
и buildRequest
, которые вызываются последовательно.
Велосипеды - зачастую источники ошибок.
В документации ВК я не нашёл строгого описания формата server url
, а эта функция очень строгая - исключительно строки в формате "https://lp.vk.com/wh777777777"
, но путь ведь может отличаться. Может быть, например "https://lp.vk.com/wh777777777/some/thing"
- в таком случае она выдаст ошибку
Исправил, если это так принципиально
тут еще момент в том, что поведение библиотечных функций очевидно и понятно, а в самописных функциях приходится разбираться и тщательно проверять на наличие возможных ошибок.
проверь модуль Common.Functions
: половина функций из него нигде не вызывается, еще половина имеет библиотечные аналоги.
как по мне
for :: Monad m => m a -> (a -> b) -> m b
for = flip fmap
в таких случая лучше оставить flip fmap
, если оно необходимо. не надо делать в отдельном модуле функцию for
(в крайнем случае вынести ее в where
в том месте, где она вызывается). Потому что поведение flip fmap
очеидно, а поведение for
надо еще найти
Исправил.
https://github.com/pf03/newBot/blob/5c8e387215807a19862848cc28f94b6752ddf59d/src/Messenger/Bot/VK/Instances.hs#L70 Лучше использовать библиотечную функцию parseRequest для этого. Метод можно указать вручную: