URI::InvalidURIError для URI, который я не могу закодировать

Я использую https://github.com/jnunemaker/httparty для сокращения коротких URI и столкнулся с:

HTTParty.get('http://bit.ly/19NoFfn', limit: 50 )

который при расширении дает:

https://sublime.wbond.net/packages/PhpSpec Snippets

который, очевидно, выдает: URI::InvalidURIError.

Можно ли передать httparty некоторый параметр, чтобы он автоматически пытался кодировать URI, прежде чем пытаться следовать им?


person janosrusiczki    schedule 05.09.2013    source источник


Ответы (1)


Я вроде решил свою проблему:

def unshorten(uri)
  begin
    response = HTTParty.get(uri, limit: 50)
  rescue URI::InvalidURIError => error
    bad_uri = error.message.match(/^bad\sURI\(is\snot\sURI\?\)\:\s(.*)$/)[1]
    good_uri = URI.encode bad_uri
    response = self.unshorten good_uri
  end
  response
end

Мне не очень удобно извлекать URI из строки сообщения об ошибке, но, похоже, другого пути нет. Или есть? :)

person janosrusiczki    schedule 08.09.2013
comment
Хе. У меня была точно такая же мысль, как и у вас, и я оказался здесь, на вашем ответе — я могу решить это так, но, конечно, это не лучший способ. - person Tim Fletcher; 23.03.2017