[Io] Been making a list of Http stuff

Todd Blanchard tblanchard at mac.com
Fri Jan 20 07:21:19 UTC 2006


that is available in the image - seems like we've got six of everything.

Where to begin?  There is a rather nice hierarchy of Url classes for  
the various schemes that include http, file, ftp, etc.  They seem to  
work reasonably well apart from the issue I filed a fix for at http:// 
bugs.impara.de/view.php?id=2454 .  (I seem only to be able to submit  
bugs, not take ownership of them).

Competing is some classes by Michael Rueger in a package called URI  
which contains a class of the same name.  This package has similar  
interface, however doing 'http://www.yahoo.com' asURI  
retrieveContents results in a walkback as it attempts to call  
HttpClient>>retrieveMIMEDocument: which doesn't exist.  Seems to be  
some mismatch and this brings us to HttpClient.

HttpClient is a grab bag of class methods for doing fetching of files  
over http.  It is used by squeak's network update machinery,  
ProjectLauncher, and HttpServerDirectory.  I wonder if most of what  
it does couldn't be accomplished within the Url hierarchy directly.

There is also a class called HttpLoader - this one seems to try to  
perform async downloads of files over http and has a caching  
variant.  I've given it a few tries and found that some significant  
percentage of the time it ends up getting a timeout response -  
presumably because it doesn't start reading fast enough after opening  
the socket.

It seems to be used by the same code that uses HttpClient.  This code  
doesn't bother me nearly as much as HttpClient (which isn't much of a  
client but just a bunch of functions).  HttpClient seems to be a 1.0  
client BTW.

Looking for Http 1.1 code I find two squeakmap packages.  HC  
HttpClient, and HttpClient (steve waring).  I've tried HCHttpClient  
and gotten walkbacks when downloading files in chunked mode.  I need  
to try the other one and will report when I do.  Both 1.1 clients  
have support for cookies, authentication, and redirection.  Neither  
does caching.

That's what I've been up to.  I realize this is probably working on  
layer above where this team is mostly focused.  I'd like to get more  
involved but am not entirely sure how to proceed.  I have a couple  
personal itches:

SSL - getting an OpenSSL plugin would be useful so we could do https  
fetches and better async loading and caching of documents.  I seem to  
be building the better part of a web browser as well (html parser,  
css parser, html dom, css selector matching, looking for javascript  
implementation) and would be interested in working with someone on  
that as well.

Cheers,
-Todd Blanchard









More information about the Io mailing list