Coral CDN support for URLs with non-standard ports

submitted by Lenny Domnitser
This commit is contained in:
Sam Ruby 2007-04-09 08:30:52 -04:00
parent cf137aad95
commit 3cd0e7149b
4 changed files with 13 additions and 5 deletions

1
THANKS
View File

@ -13,6 +13,7 @@ Morten Frederiksen - Support WordPress LinkManager OPML
Harry Fuecks - default item date to feed date Harry Fuecks - default item date to feed date
Antonio Cavedoni - Django templates Antonio Cavedoni - Django templates
Morten Frederiksen - expungeCache Morten Frederiksen - expungeCache
Lenny Domnitser - Coral CDN support for URLs with non-standard ports
This codebase represents a radical refactoring of Planet 2.0, which lists This codebase represents a radical refactoring of Planet 2.0, which lists
the following contributors: the following contributors:

View File

@ -3,14 +3,15 @@ Remap all images to take advantage of the Coral Content Distribution
Network <http://www.coralcdn.org/>. Network <http://www.coralcdn.org/>.
""" """
import sys, urlparse, xml.dom.minidom import re, sys, urlparse, xml.dom.minidom
entry = xml.dom.minidom.parse(sys.stdin).documentElement entry = xml.dom.minidom.parse(sys.stdin).documentElement
for node in entry.getElementsByTagName('img'): for node in entry.getElementsByTagName('img'):
if node.hasAttribute('src'): if node.hasAttribute('src'):
component = list(urlparse.urlparse(node.getAttribute('src'))) component = list(urlparse.urlparse(node.getAttribute('src')))
if component[0]=='http' and component[1].find(':')<0: if component[0] == 'http':
component[1] = re.sub(r':(\d+)$', r'.\1', component[1])
component[1] += '.nyud.net:8080' component[1] += '.nyud.net:8080'
node.setAttribute('src', urlparse.urlunparse(component)) node.setAttribute('src', urlparse.urlunparse(component))

View File

@ -1,7 +1,10 @@
<entry xmlns="http://www.w3.org/2005/Atom"> <entry xmlns="http://www.w3.org/2005/Atom">
<content> <content>
<div xmlns="http://www.w3.org/1999/xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">
<img src="http://example.com/foo.png"/> Plain old image: <img src="http://example.com/foo.png"/>
Host has a non-standard port: <img src="http://example.com:1234/foo.png"/>
A non-port colon: <img src="http://u:p@example.com/foo.png"/>
Several colons: <img src="http://u:p@example.com:1234/foo.png"/>
</div> </div>
</content> </content>
</entry> </entry>

View File

@ -11,8 +11,11 @@ class FilterTests(unittest.TestCase):
output = shell.run(filter, open(testfile).read(), mode="filter") output = shell.run(filter, open(testfile).read(), mode="filter")
dom = xml.dom.minidom.parseString(output) dom = xml.dom.minidom.parseString(output)
imgsrc = dom.getElementsByTagName('img')[0].getAttribute('src') imgsrcs = [img.getAttribute('src') for img in dom.getElementsByTagName('img')]
self.assertEqual('http://example.com.nyud.net:8080/foo.png', imgsrc) self.assertEqual('http://example.com.nyud.net:8080/foo.png', imgsrcs[0])
self.assertEqual('http://example.com.1234.nyud.net:8080/foo.png', imgsrcs[1])
self.assertEqual('http://u:p@example.com.nyud.net:8080/foo.png', imgsrcs[2])
self.assertEqual('http://u:p@example.com.1234.nyud.net:8080/foo.png', imgsrcs[3])
def test_excerpt_images1(self): def test_excerpt_images1(self):
config.load('tests/data/filter/excerpt-images.ini') config.load('tests/data/filter/excerpt-images.ini')