Dare Obasanjo's weblog
"You can buy cars but you can't buy respect in the hood" - Curtis Jackson
Navigation for Rant - Dare Obasanjo's weblog
Content
Sidebar
Footer
May 4, 2003
@ 12:58 AM
Comments [0]
Rant
So I decided to spend this morning implementing some new features for the underlying RSS processing bits that RSS Bandit uses. The first thing I did was add HTTP compression support since folks like
Scott Watermasysk have complained about about the bandwidth load
from aggregators that fail to request compressed files. This was fairly straightforward since all I had to do was use
#ziplib
.
The second thing I wanted to do was support
HTTP 301
responses which indicate that the RSS feed has permanently moved to a new location.
Mark Pilgrim complained about serving 4000 permanent redirects a day
which shouldn't happen if aggregators updated the feed URL once they got a 301. Implementing this feature was not as straightforward as I thought and is still not complete. The first problem came about because RSS Bandit uses the feed URL to uniquely identify nodes in its tree view. Now RSS Bandit has to deal with the fact that these unique identifiers can change any time the user makes a request for the feed. This is made trickier by the fact that requesting a feed is done via an asynchronous call so as not to tie up the GUI yet this async call may change fundamental aspects of the data structures the GUI relies on. Getting it to work correctly is not a big deal in the long run but it was not as straightforward as I expected.
The bigger problem comes with trying to actually process 301 responses directly. The HttpWebRequest class has an
AllowAutoRedirect
property which automatically follows redirects but means that the only way one can tell if a redirect occured is with the following code
bool hasChanged = (req.RequestUri != req.Address);
Now the problem with this code is that you can't tell what type of redirect it was. If it was a 301 then I need to update the URL for the feed so I don't send redundant HTTP requests later on. However the server could have sent any number of other redirects such as a 307 which may redirect you to an error page in case some internal error occured (ignoring the fact that a properly configured web server should send a 500, tell that to the
.NET Weblogs
folks) in which case the feed URL shouldn't be updated.
So my only alternative is to turn of redirect support and catch the WebException that is thrown when the HttpWebRequest class gets a 3xx response, inspect its
Response property
, then repeat the request after deciding whether I should update the feed URL. Of course, this also has to take into account that the web server may send multiple redirects. Am I the only one that thinks that such "normal program flow" code has no business being in a catch block?
*sigh*
Tweet
Categories:
« Information Wants To Be Free
|
Home
|
RSS Bandit v1.1 Teaser [screenshot] »
Comments are closed.
RSS/Subscribe
Archives
All dates
All Posts
Search
Latest Posts
Culture Eats Strategy for Breakfast
Some Thoughts on Paul Graham’s Essay on Income Inequality
How Facebook Knows Who You’re Talking to on Tinder and OKCupid
Fabric: Why Developers Can Trust Twitter Won’t Screw Them This Time
5 Account Security Features Every Online Service Should Implement But Doesn't
Facebook’s Newsfeed Experiment: Most people have grabbed the wrong end of the stick
Change is bad unless it’s great: Lessons from user revolts against Foursquare’s Swarm and the new Skype for iPhone
Facebook’s App Links: The Good, the Bad and the Ugly
The mobile web vs apps is another front on the battle between open and closed systems
How Facebook Knows What You Looked at on Amazon
Categories
Cloud Computing (5)
Comics (1)
Competitors/Web Companies (161)
Current Affairs (31)
Das Blog (3)
dasBlog (1)
Life in the B0rg Cube (197)
Mindless Link Propagation (185)
Movie Review (13)
MSN (127)
Music (20)
Office Live (8)
Personal (54)
Platforms (59)
Programming (58)
Ramblings (145)
Rants (7)
RSS Bandit (215)
Seattle Startup Shoutout (4)
Social Software (185)
Startup Shoutout (4)
Syndication Technology (108)
Technology (169)
Trip Report (63)
Video Games (6)
Web Development (198)
Windows Live (227)
XML (203)
XML Web Services (114)
Archives
January, 2016 (2)
October, 2015 (1)
October, 2014 (1)
September, 2014 (1)
July, 2014 (1)
June, 2014 (1)
May, 2014 (1)
April, 2014 (1)
February, 2014 (1)
January, 2014 (1)
December, 2013 (1)
November, 2013 (2)
July, 2013 (1)
March, 2013 (1)
November, 2012 (2)
September, 2012 (2)
July, 2012 (3)
June, 2012 (1)
April, 2012 (1)
February, 2012 (1)
January, 2012 (1)
November, 2011 (1)
September, 2011 (3)
July, 2011 (2)
June, 2011 (1)
April, 2011 (1)
March, 2011 (1)
January, 2011 (2)
November, 2010 (2)
October, 2010 (2)
August, 2010 (3)
July, 2010 (3)
June, 2010 (3)
April, 2010 (6)
March, 2010 (3)
February, 2010 (5)
January, 2010 (4)
December, 2009 (2)
November, 2009 (8)
October, 2009 (1)
September, 2009 (3)
August, 2009 (4)
June, 2009 (1)
May, 2009 (12)
April, 2009 (5)
March, 2009 (17)
February, 2009 (11)
January, 2009 (20)
December, 2008 (12)
November, 2008 (12)
October, 2008 (22)
September, 2008 (12)
August, 2008 (15)
July, 2008 (18)
June, 2008 (19)
May, 2008 (12)
March, 2008 (2)
February, 2008 (27)
January, 2008 (20)
December, 2007 (26)
November, 2007 (26)
October, 2007 (29)
September, 2007 (16)
August, 2007 (34)
July, 2007 (26)
June, 2007 (33)
May, 2007 (37)
April, 2007 (14)
March, 2007 (32)
February, 2007 (35)
January, 2007 (29)
December, 2006 (29)
November, 2006 (47)
October, 2006 (26)
September, 2006 (46)
August, 2006 (40)
July, 2006 (38)
June, 2006 (48)
May, 2006 (33)
April, 2006 (39)
March, 2006 (38)
February, 2006 (42)
January, 2006 (42)
December, 2005 (43)
November, 2005 (40)
October, 2005 (48)
September, 2005 (45)
August, 2005 (40)
July, 2005 (31)
June, 2005 (36)
May, 2005 (38)
April, 2005 (31)
March, 2005 (39)
February, 2005 (22)
January, 2005 (25)
December, 2004 (32)
November, 2004 (27)
October, 2004 (24)
September, 2004 (26)
August, 2004 (23)
July, 2004 (25)
June, 2004 (29)
May, 2004 (39)
April, 2004 (37)
March, 2004 (41)
February, 2004 (51)
January, 2004 (54)
December, 2003 (42)
November, 2003 (40)
October, 2003 (41)
September, 2003 (8)
August, 2003 (11)
July, 2003 (9)
June, 2003 (14)
May, 2003 (12)
April, 2003 (12)
March, 2003 (13)
February, 2003 (13)
January, 2003 (13)
December, 2002 (12)
November, 2002 (8)
October, 2002 (6)
September, 2002 (5)
August, 2002 (6)
July, 2002 (6)
June, 2002 (4)
May, 2002 (8)
April, 2002 (3)
March, 2002 (1)
February, 2002 (1)
January, 2002 (4)
November, 2001 (4)
October, 2001 (3)
September, 2001 (3)
August, 2001 (1)
July, 2001 (1)
May, 2001 (0)
April, 2001 (2)
March, 2001 (2)
BlogRoll
Alexander Groß
Anthony Bouch
Ben Scheirman
Clemens Vasters
Erv Walter
Gray's Matter
Harry Pierson
James Snape
John Forsythe
Joshua Flanagan
Kris van der Mast
Mark Michaelis
Michael Earls
Omar Shahine
Paulb Vanbrenk
Scott Hanselman
Stephen Forte
Steven Rockarts
Tom Mertens
Tom Watts
Tony Bunce
Vasanth Dharmaraj
Categories
Cloud Computing
Comics
Competitors/Web Companies
Current Affairs
Das Blog
dasBlog
Life in the B0rg Cube
Mindless Link Propagation
Movie Review
MSN
Music
Office Live
Personal
Platforms
Programming
Ramblings
Rants
RSS Bandit
Seattle Startup Shoutout
Social Software
Startup Shoutout
Syndication Technology
Technology
Trip Report
Video Games
Web Development
Windows Live
XML
XML Web Services
Contact the Author
Themes
Pick a theme:
BlogXP
business
calmBlue
Candid Blue
dasBlog
dasblogger
dasblueblog
dasEmerald
DirectionalRedux
Discreet Blog Blue
Elegante
essence
Just Html
MadsSimple
Mobile
Mono
Movable Radio Blue
Movable Radio Heat
nautica022
orangeCream
Portal
Project84
Project84Grass
Slate
Sound Waves
Tricoleur
useit.com
Voidclass2
Admin
Sign In