[Pharo-project] [Progress Report] Zinc HTTP Components

Sven Van Caekenberghe sven at beta9.be
Sun May 1 15:17:00 EDT 2011


It has been quite a while, but here is another progress report on the Zinc HTTP Components project.

First of all, Zinc HTTP Components has found a new home:


and more importantly, it is now self hosted, i.e. the pages you see are served by Zn, and all testing and debugging handlers are now available live. For more information regarding this production quality deploy, please see


The documentation pages have been updated a bit to better reflect the current status of the project.

Second, I thank all people who contributed by testing Zn, giving feedback as well as for some of them actual code. Thank you, Cédrick Béler, Philippe Marschall, Esteban Lorenzano, Jan van de Sandt, Stéphane Ducasse, Andy Burnett, Norbert Hartl, Paul DeBruicker, Hernán Morales Durand and Tony Fleig. (I hope I didn't forget anyone). Thanks Lukas Renggli and Marcus Denker for adding Zn to their continuous integration servers. 


Here is a list of changes since January of this year:

- introduction of ZnUrl class
- improved ZnStaticFileServerDelegate
- introduced #asZnMimeType on ZnMimeType, MIMEType & String
- Zinc-AWS proof of concept client
- added lots of comments
- several fixes to Zinc's Seaside adaptor, ZnZincServerAdaptor (encoding issues)
- split of ZnNetworkingUtils from ZnUtils to separate related functionality
- fixed ZnClient class>>#getImageOfType:usingParser:fromUrl: to correctly report responses with unexpected mime types 
- promoted ZnFixedClient>>#fixedUrl: to public status and changed it to accept ZnUrl objects as well for more flexibility 
  (allowing users to add query/fragment URL elements in addition to the path)
- ZnUserAgent (and ZnHttpClient) now can follow relative redirect locations
- introduced ZnMultiValueDictionary to allow multiple values to be stored under one key as an array,
  using it for queries and headers
- changed the redirect behavior for POST/PUT requests: the common practice is to turn these into GET request, 
  see ZnUserAgent>>#method:for:headers:data:imit: and ZnUserAgent>>#prepareRedirect:
- added simple ConfigurationOfZincHTTPComponents
- added ZnByteEncoder to handle single byte encodings that do not map directly to the lower Unicode section 
  (for example Latin2, ISO-8859-2) by reusing the mapping tables from ByteTextConverter
- added #handlesEncoding: and #newForEncoding: protocol to class side of ZnCharacterEncoding hierarchy
- added proper content length computation to ZnMultiPartFormDataEntity (bugfix)
- some code cleanup to ZnEntity content length computation
- added ZnUrl>>#queryDo: ZnApplicationForUrlEncodedEntity>>#fieldsDo:
- added ZnMessage>>#resetEntity: to allow overwriting content type and length when these are already set
- fixed a typo in the ZnMimePart instance creation methods (formdata should be form-data)
- added ZnResponse>>#serverError:
- implemented ZnHTTPSocketFacade class>>#httpPostMultipart:args:accept:request:
- added ZnHTTPSocketFacade class>>#constructMultiPartFormDataEntity:
- extended ZnZincServerAdaptor to handle multipart formdata posts (including file uploads)
- introducing exception hierarchy in Zinc-HTTP-Exceptions
- added ZnResponse>>#isNotModified
- bugfix to Base64 encoding that introduced newlines
- changed ZnZincServerAdaptor>>#defaultCodec to GRNullCodec
- added new logging framework in Zinc-HTTP-Logging, consisting of ZnLogEvent (an Announcment), 
  ZnLogSupport and ZnLogListener and subclasses ZnTranscriptLogger, ZnMemoryLogger and ZnFileLogger
- now using the new logging facilities in Zn[Single|Multi]ThreadedServer, ZnFixedClient and ZnUserAgent
- now using the new logging facilities in Zn[Single|Multi]ThreadedServer, ZnFixedClient and ZnUserAgent
- small fix to ZnUrl>>#printPathOn: to deal with cases where forward slashes are encoded in URLs
- various small changes related to the Gemstone port (byte array literals, Unicode creation)
- fixed an important bug related to reading entities upToEnd

The latest version now is: 

Name: Zinc-HTTP-SvenVanCaekenberghe.150
Author: SvenVanCaekenberghe
Time: 1 May 2011, 7:19:13 pm
UUID: 8fe0b470-7728-454d-bc90-fa42d8330817
Ancestors: Zinc-HTTP-SvenVanCaekenberghe.149

More information about the Pharo-dev mailing list