lib/messenger/web.rb in messenger-0.5.0 vs lib/messenger/web.rb in messenger-0.6.0

- old
+ new

@@ -1,13 +1,14 @@ +require 'addressable/uri' require 'httparty' require 'cgi' class Messenger::Web def self.valid_url?(url) - !!URI.parse(url) - rescue URI::InvalidURIError + !!Addressable::URI.parse(url) + rescue Addressable::URI::InvalidURIError false end # URL format: # http://example.com @@ -16,24 +17,23 @@ # The body of the message is posted as the body of the request, not the query. def self.deliver(url, body, options={}) raise Messenger::URLError, "The URL provided is invalid" unless valid_url?(url) options = options.dup method = options.delete(:method) || :post - uri = URI.parse(url) + uri = Addressable::URI.parse(url) user = CGI.unescape(uri.user) if uri.user password = CGI.unescape(uri.password) if uri.password options = options.merge(:basic_auth => {:username => user, :password => password}) if user || password - uri.user = nil if user - uri.password = nil if password + uri.userinfo = nil if user || password response = HTTParty.send(method, uri.to_s, options.merge(:body => body)) Messenger::Result.new(success?(response), response) end def self.obfuscate(url) raise Messenger::URLError, "The URL provided is invalid" unless valid_url?(url) - path = URI.parse(url) + path = Addressable::URI.parse(url) if path.password - url.sub(/#{path.password}/, 'xxxx') + url.sub(/#{Regexp.escape(path.password)}/, 'xxxx') else url end end