Ruby. URI.encode и to_uri

Намедни наткнулся на забавную особенность URI.encode — он не всегда обрабатывает спецсимволы, в результате чего выскакивала ошибка вида URI::InvalidURIError: bad URI(is not URI?). В частности, при попытке выполнить код:

open(@api_url).read

где, @api_url имеет вид:

https://api.reg.ru/api/regru2/zone/add_alias?input_format=json&input_data={"username":"test","password":"test","domains":[{"dname":"test.ru"},{"dname":"test.com"}],"subdomain":"@","ipaddr":"111.111.111.111"}

URI.encode не обрабатывал символы ‘:’, ‘[‘ и ‘]’. Грусть-печалька конечно, но решается довольно просто:

require 'uri-handler'
open(@api_url.to_uri).read

Разумеется, для начала необходимо установить соответствующий gem

gem install uri-handler
Ruby. URI.encode и to_uri

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *