BedSheet is a Fantom framework for delivering web applications.

Built on top of IoC and Wisp, BedSheet is concerned with providing a rich mechanism for the routing and delivery of content over HTTP.

This new release of BedSheet doesn't add any more amazing new features (would that be possible!?) but it does groom and tidy what's already there. Here are a summary of changes:

Routes can takeany Response Object

Routing http requests to service methods is powerful, but often you just want simple things like:

  • redirect one url to another, or
  • return a bit of place holder text

So now Routes let you do this - by accepting any response object in the ctor. Should the Route be matched, the response object is returned for further processing.

Re-Jigged Err handling

Internally, the pipeline flow of Errs has changed. For starters, Errs are no longer converted into HttpStatus 500 objects for further processing (which was a bit eager).

ErrProcessors now work in a similar fashion to HttpStatusProcessors where BedSheet provides a (configurable) default if no other processor could be found.

These changes make it easier to set your own, custom, Err page. For now you only contribute an ErrProcessor; you don't have to override one.

Service to render the default BedSheet pages

If you create your own Err page, sometimes it's still nice to render the default (verbose) BedSheet Err page; especially in a development environment. The addition of this service lets you do this.

Added dependency onIocEnv

Verbose Err pages are now only rendered in non-production environments, which necessitated the inclusion of this handy little utility library.

HttpRequestLogFilter included by default

That is, included, not enabled! You need to configure where the logs should be saved before it's enabled.

Logging HTTP requests is common practice and it shouldn't be difficult to set up. Having to manually add the logging filter to the HTTP Pipeline seemed a step too far... so now you don't!

Removed non-core functionality

Gone are the IE Cache Busting Ajax Filter and the Cross Origin Resource Sharing (CORS) Handler. (I'll blog about these if there's interest.)

Gone is the Route Matching service. This allowed you to contribute Objs other than Route to the Routes service. This largely existed to facilitate draft Routes but, given a Route may now take any Response object, this extra layer of redirection is not needed. (Don't worry BedSheetDraft has been updated and still works with BedSheet 1.2!)

It's all about removing clutter from the API and ensuring BedSheet does what it does best - being the middleman for HTTP requests.

Groomed API Documentation

To make it easier for beginners to understand how to use each class / mixin / service.

Have fun!