1 2 3 4 5 6 7
URI.parse("http://chart.apis.google.com/chart?cht=lc&chs=200x30&chd=t:-1,53.9,53.9,40.0,38.6,34.3,32.5,31.0,30.1,26.7,24.8,23.1,21.7,11.5,10.9,10.1,5.7,3.7,2.1,0.0,9.5,100.0,98.3,95.8,91.8,85.0,83.8,81.8,66.5,59.7,56.7,53.9,52.1,35.3,33.9,33.4,28.7,27.3,23.6,20.7,18.5,16.1&chco=336699&chls=2,1,0&chm=o,990000,0,1,4|o,990000,0,41,4&chxt=r,x,y&chxs=0,990000,11,0,_|1,990000,1,0,_|2,990000,1,0,_&chxl=0:|$-2940.39|1:||2:||&chxp=0,16.1") returns from /usr/lib/ruby/1.8/uri/common.rb:436:in `split' from /usr/lib/ruby/1.8/uri/common.rb:485:in `parse' from (irb):2
Refactorings
No refactoring yet !
Elij
December 20, 2007, December 20, 2007 08:18, permalink
It doesn't include the pipe character so the regular expression (to determine ABS or REL URI) is failing -- might be worth submitting a patch upstream if I'm right.
1
grep -n UNRESERVED /usr/lib/ruby/1.8/uri/common.rb
John Nunemaker
January 5, 2008, January 05, 2008 05:26, permalink
Escape the uri before parsing it. | is not safe but it's escaped version will work fine. Check out the irb code below:
1 2 3 4 5 6 7 8
>> require 'uri' => true >> URI.escape('|') => "%7C" >> domain = "http://chart.apis.google.com/chart?cht=lc&chs=200x30&chd=t:-1,53.9,53.9,40.0,38.6,34.3,32.5,31.0,30.1,26.7,24.8,23.1,21.7,11.5,10.9,10.1,5.7,3.7,2.1,0.0,9.5,100.0,98.3,95.8,91.8,85.0,83.8,81.8,66.5,59.7,56.7,53.9,52.1,35.3,33.9,33.4,28.7,27.3,23.6,20.7,18.5,16.1&chco=336699&chls=2,1,0&chm=o,990000,0,1,4|o,990000,0,41,4&chxt=r,x,y&chxs=0,990000,11,0,_|1,990000,1,0,_|2,990000,1,0,_&chxl=0:|$-2940.39|1:||2:||&chxp=0,16.1" => "http://chart.apis.google.com/chart?cht=lc&chs=200x30&chd=t:-1,53.9,53.9,40.0,38.6,34.3,32.5,31.0,30.1,26.7,24.8,23.1,21.7,11.5,10.9,10.1,5.7,3.7,2.1,0.0,9.5,100.0,98.3,95.8,91.8,85.0,83.8,81.8,66.5,59.7,56.7,53.9,52.1,35.3,33.9,33.4,28.7,27.3,23.6,20.7,18.5,16.1&chco=336699&chls=2,1,0&chm=o,990000,0,1,4|o,990000,0,41,4&chxt=r,x,y&chxs=0,990000,11,0,_|1,990000,1,0,_|2,990000,1,0,_&chxl=0:|$-2940.39|1:||2:||&chxp=0,16.1" >> URI.parse(URI.escape(domain)) => #<URI::HTTP:0x1d67e4 URL:http://chart.apis.google.com/chart?cht=lc&chs=200x30&chd=t:-1,53.9,53.9,40.0,38.6,34.3,32.5,31.0,30.1,26.7,24.8,23.1,21.7,11.5,10.9,10.1,5.7,3.7,2.1,0.0,9.5,100.0,98.3,95.8,91.8,85.0,83.8,81.8,66.5,59.7,56.7,53.9,52.1,35.3,33.9,33.4,28.7,27.3,23.6,20.7,18.5,16.1&chco=336699&chls=2,1,0&chm=o,990000,0,1,4%7Co,990000,0,41,4&chxt=r,x,y&chxs=0,990000,11,0,_%7C1,990000,1,0,_%7C2,990000,1,0,_&chxl=0:%7C$-2940.39%7C1:%7C%7C2:%7C%7C&chxp=0,16.1>
trying to use URI to parse a big fat google chart api url...