Hi Rainbows' folks!
I would like to announce the first release (dubbed 0.9) of Coquelicot (that was last mentioned on this list February, 2012).
Coquelicot is a simple "one-click" file sharing web application specific focus on protecting users' privacy. For the full list of features, please head over to the README: http://coquelicot.potager.org/README
Coquelicot leverages Rainbows! ability to bend Rack specification and not have a 'rewindable input' to directly stream uploaded data to an encrypted file. In order to do this, the multipart form data is handled as bytes arrive using the 'multipart-parser' gem and a small ad-hoc EDSL to describe how to process the various fields.
If you want to have a look at the code, head over to Coquelicot::Rack::Upload: https://coquelicot.potager.org/gitweb/?p=coquelicot.git;a=blob;f=lib/coquelicot/rack/upload.rb;hb=HEAD and Coquelicot::Rack::MultipartParser: https://coquelicot.potager.org/gitweb/?p=coquelicot.git;a=blob;f=lib/coquelicot/rack/multipart_parser.rb;hb=HEAD
Because Coquelicot is so tied to this Rainbows! specific feature, it embeds server startup and shutdown. See Coquelicot::App#start! and #stop! around: https://coquelicot.potager.org/gitweb/?p=coquelicot.git;a=blob;f=lib/coquelicot/app.rb;hb=HEAD#l113
Another interesting trick that might interest some reader is AGPL support: the application can dynamically provide its source code by producing a Gem on the fly. See 'get /source' around: https://coquelicot.potager.org/gitweb/?p=coquelicot.git;a=blob;f=lib/coquelicot/app.rb;hb=HEAD#l298
The whole application is covered by 280 RSpec tests and is been running in production with the current form handling for a year. Source code and documentation is available at: https://coquelicot.potager.org/
Comments would be highly appreciated, of course. :)
Cheers,