New: HttpStatus.toErr() to replace HttpStatus.makeErr().
Chg: The filename directive the Content-Disposition HTTP header as set by HttpResponse.saveAsAttachment() is now quoted. This fixes an issue in new versions of FireFox. Thanks to Sean Rosin of BuildingFit for reporting.
Chg: Hardened up Quality Value parsing to allow for parameters.
Bug: Fixed a bug with Windows 10 that threw a "Java class not found error" when launching a web app with the development proxy enabled.
Bug: Directory URLs would cause an Err in FileHandler.
v1.5.16
New: Rewrote Route handling service to be vastly simpler and optimised. Many thanks to Phil Birch for the initial implementation. (Potential breaking change.)
New: Config ID canonicalRouteStrategy for re-directing to non-prescribed URLsl
Chg: Renamed Redirect to HttpRedirect.
Chg: Err is now thrown if you try to overwrite a Route with the same URL.
Chg: Tweaked ClientAsset.isModified() logic so it hits the file system less.
Chg: Renamed IoC scope request to httpRequest. (Potential breaking change.)
v1.5.14
New: MiddlewarePipeline.logMiddleware so middleware may be logged at startup.
Chg: Updated dependencies to latest pod versions.
Chg: HttpStatus.data may now be any immutable object.
Chg: Dodgy Wisp URL errors are no longer logged, that is, URLs that start with a // (double slash).
Chg: Downgraded "socket closed" errors to be logged at debug level.
Bug: Fixed NPE caused by bad SrcMap URLs.
v1.5.12
New: Stable WatchDog process replaces the old dev proxy.
Chg: Updated code to work with Fantom 1.0.71 - the wisp::WispSessionStore mixin changed.
Chg: All HTTP Response headers are cleared before processing an error handler.
Chg: Fixed an Err when flushing an upgraded WebSocket. Web / Wisp is the actual problem, but we work around it.
Chg: Deprecated Redirect.uri in favour of new Redirect.location and made the RedirectType enum public.
Chg: Deprecated HttpSession.map in favour of new HttpSession.val.
Chg: BootMod startup message may now be configured via an Ioc option.
Bug: Dev proxy did not correctly proxy multiple Set-Cookie response headers.
Bug: Fixed occasional NPE when removing cookies.
Bug: Fixed NPE when processing /dev/ URLs in SrcMapHandler.
Bug: Fixed some proxy restarting churn when webapp takes several seconds to startup.
v1.5.10
New: Added HttpSession.onCreate() that takes an event handler that's fired if a session is created during the current request.
New: Added HttpResponse.onCommit() that takes an event handler that's fired just before the response is committed so you can change the headers last minute.
New: BedSheetBuilder options let you specify a WispSessionStore implementation, and configure a proxy startup wait.
New: Added ClientAsset.clientUrlAbs().
New: Added to HttpResponseHeaders: contentSecurityPolicy, contentSecurityPolicyReportOnly, referrerPolicy, strictTransportSecurity, xContentTypeOptions
New: The standard BedSheet pages alter Content-Security-Policy directives (should one be defined) to add hashes for their inline scripts and styles.
New: A static HttpResponse.statusMsg() method.
New: Added BedSheetBuilder.silence() method.
Chg: HttpRequestHeaders and HttpResponseHeaders are now non-const, it makes more sense and makes testing easier. They also have general purpose ctors, and generally received some love. (Potential breaking change.)
Chg: Deleted the Delegate Chain Builder pattern for HttpRequest, HttpResponse, and HttpOutStream. (WTF was I thinking!?) HttpOutStream uses standard IoC delegation.
Chg: Allow request bodies be read and parsed as multipart forms.
Chg: HTTP Referer header is now URL decoded and more leniently parsed.
Chg: BedSheet defaults to port 80 when testing (and not port 0).
Chg: Converted HttpRequestHeaders.origin from Str to a URI. (Potential breaking change.)
Chg: Added Text.toBuf() and made Text processing more efficient (text is no longer encoded twice).
Chg: Rejigged how Flash session data is handled so the session is not loaded on every request.
Bug: BedSheetServer.host() could sometimes contain the app port, not the proxy port.
Bug: HttpSession.exists() would still return true after it was deleted earlier in the request.
v1.5.8
New: Added BedSheetBuilder.toRegistryBuilder().
New: Added HttpRequest.host() for making sense of proxy values.
New: Added a BoolValueEncoder for converting checkbox values - nabbed from FormBean.
Chg: HttpReqest.urlAbs() now utilises BedSheetServer.toAbsoluteUrl() for smarter Host processing.
Chg: When running in dev mode BedSheetServer.host() now returns the usable proxy port, not the actual app port.
Bug: HEAD requests had their Content-Length header reset to 0.
v1.4.8.4
Bug: New Proxy code didn't work on MacOS - thanks go to Shturman.
v1.4.8.2
New: BedSheetBuilder.makeFromType() ctor to pass in AppModule.
Chg: Documentation tweaks and fixes.
v1.4.8
New: Use BedSheetBuilder to create BedSheet IoC Registries and start Wisp servers.
New: HttpRequestBody for convenience methods to access the request body. (Similar to Butter.)
Chg: New Proxy code ensures all build parameters are passed to the real app.
Chg: Renamed Text.json() -> Text.jsonObj(). Text.json() now takes a Str. (Potential breaking change.)
Chg: FileHandler.fromLocalUrl() and FileHandler.fromServerFile() now take a checked parameter.
Chg: FileAssetProcessor now copes with duff If-None-Match Etag requests headers.
v1.4.6
Chg: BedSheet now compatible with Fantom v1.0.67 - issues with gzip and the dev proxy.
Bug: BedSheet sometimes reported a NullErr when starting up in dev mode.
v1.4.4
Bug: Startup Errs thrown by FileHandler (and middleware in general) ended up in limbo and weren't reported.
v1.4.2
Chg: HTTP requests received when BedSheet is starting up are given a 500 status code and a starting up message. Previous behaviour was to queue up the requests, but that can cause issues under heavy load.
Chg: HttpRequest.form throws a HttpStatusErr (400 - Bad Request) should the form data be invalid - see sys::Uri.decodeQuery. SpamBots send you all sorts of crap!
Bug: BedSheet welcome page had the 404 page appended to it - Firefox reported the page as junk!
v1.4.0
New: Errs and Funcs may be used as response objects - new ResponseProcessors added.
Chg: Removed BedServer and BedClient, they have been moved to Bounce. (Breaking change)
Chg: Removed @Config, use @afIocConfig::Config instead. (Breaking change)
Chg: Renamed HttpPipelineFilter -> Middleware and updated the corresponding services. Hardcoded the default BedSheet filters / middleware to the start of the pipeline. (Breaking change)
Chg: Renamed HttpRequestLogFilter -> RequestLogMiddleware and updated the @Config values. (Breaking change)
Chg: @NoDoced some services as they're only referenced by @Contribute methods: ErrProcessors, HttpStatusProcessors, ResponseProcessor, ValueEncoders.
Chg: QualityValues are nullable from HttpRequestHeaders