Пробел в урлах
Хотя интернету 55 лет, мы до сих пор не починили пробел в урлах.
На выходных была ситуация: упали крон-джобы, и вообще произошла какая-то фигня. Файлы в S3 есть, а клиенты жалуются, что нету.
Смотрю — кто-то поменял название папки в S3. Раньше было Daily_Reports
, а
теперь Daily Reports
(с пробелом). Половина клиентов пишет файлы нормально. Но
есть другие клиенты на питоне и баше, которые кодируют урлы дважды. В результате
Daily Reports
становится новой папкой Daily%20Reports
в S3. Один клиент
пишет в Daily Reports
и ему ок. Второй клиент ищет файлы в Daily%20Reports
,
не находит и падает.
Увы, мой быдлокод тоже упал. У меня такая задача: прилетает S3-урл вида
s3://some.bucket.com/path/to/file.txt
и мне нужно вытащить из него бакет, в данном случае хост. Делаю так:
(-> s3-url java.net.URI. .getHost)
Но когда в урле оказался пробел, класс URI
валится — вай, не по стандарту, не
знаю-не могу. Поменял на класс URL
— он парсит урлы с пробелами нормально, но
теперь ему не нравится схема s3://
— опять не по стандарту. Сделал так: беру
урл, меняю схему автозаменой на http://
, оборачиваю в URL и достаю
хост. Обмазал тестами.
“Какая шаткая система, если её может разрушить пригоршня ягод!” (с)
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter