- Fixes to simulated requests to better support testing.
-
BREAKING CHANGE: scan library deprecated and is no longer exported by the woomera library. Programs that imported "package:woomera/woomera.dart" and used features from the scan library should add an extra import for "package:woomera/scan.dart". A better long-term solution is to stop using the scan library: consider using the new woomera_server_gen package.
-
BREAKING CHANGE: annotation classes moved from core library into a separate annotation library. Programs that imported "package:woomera/core.dart" and used the annotation classes should be changed to import "package:woomera/woomera.dart" (which now exports both core and annotations libraries).
-
Added new classes to annotate exception handlers. The use of the the Handles class to annotate exception handlers has been deprecated.
-
The
Handles.handlerWrapper
static member has been deprecated. A newRequestHandlerWrapper
class has been defined to annotate the wrapper function. -
The Handles class has been changed to extend an abstract WoomeraAnnotation base class, which is also the base class for the new annotation classes for exception handlers and the wrapper function.
-
BREAKING CHANGE: the
RequestHandler
is now defined as a function that returns aFuture<Response>
instead ofFuture<Response?>
. Instead of returning null, those functions must now throw aNoResponseFromHandler
exception. -
Fixed the semantics of
NotFoundException
to correctly match the HTTP specification. DeprecatedfoundNothing
andfoundMethod
constants, for the newfoundResourceDoesNotSupportMethod
andfoundNoResource
constants - which better describe their meaning. Added aresourceExist
getter to avoid needing to examine the exception's found member for those constant values. The string values produced by NotFoundException.toString have also been changed.
- Added Response.session getter.
- Fixed warnings in Dart 3.0.
- Allow use with http 1.0.0 package.
- Fixed pattern matching to match "~/" correctly when a prefix is used.
- Added Server.sessionCookieAlways to always use session cookies when cookie support detection fails.
- Throw NotFoundException when requested URL is not under server base path.
- Fixed bug with producing double slashes in Request.internalPath.
- Added ResponseNoContent response type.
- Added session setting on Response.
- Reverted Request.simulatedGet and Request.simulatedPost to constructors.
- Fixed spelling mistake in "bodySteamEventSize" to "bodyStreamEventSize".
- Added Request.bodyStream to process large bodies as a strem of bytes.
- Added HTTP client information and certificate getters to Request.
- Changed SimulatedHttpHeaders.value to throw HttpException instead of StateError to match that thrown by a real HTTP header.
- Fixed bug in isCustomExceptionHandler and isCustomRawExceptionHandler.
- Added NoResponseFromHandler exception. A future release is planning to change the handler return type from Future<Response?> to Future, and this exception must be thrown instead of the Future completing with null.
- Fixed dumpServer generated code to work with null safety.
- Stack trace passed to exception handlers now indicates the correct source.
- Fixed bug that forces session query parameters to always be used.
- Added optional message to MalformedPathException.
- Fixed bug preventing query strings from containing question marks in values.
- Null safety release.
- Added additional body methods to the SimulatedResponse class.
- Reverted StackTrace parameter to be mandatory in exception handlers.
- Added use of includeDartVersionComment in dump_server.dart.
- BREAKING CHANGE: Proxy constructor no longer has HTTP method parameter.
- Added session ID to log message when multiple session IDs are encountered.
- Fixed Proxy work when client requests keep-alive connections.
- Added mode for handling parameter whitespace and line terminators.
- Deprecated the "raw" parameter: use the new mode parameter instead.
- Upgraded to uuid 2.1.0, since earlier versions generated non-unique UUIDs.
- Enhancements to dumpServer to generate code that doesn't need dart:mirrors.
- Added support for Dart 2.8: preserveHeaderCase for SimulatedHttpHeaders.
- Merged ServerPipeline.registerInternal into the register method.
- Request.pathSegments now works with server base paths.
- Improved detection of redundant rules with patterns that match the same paths.
- Expanded dumpServer code to take the same arguments as serverFromAnnotations.
- Fixed annotation scanner to work when there are Dart extensions.
- Separated annotation scanning code into a separate library.
- BREAKING CHANGE: Server.fromAnnotations becomes serverFromAnnotations.
- BREAKING CHANGE: ServerPipeline.fromAnnotations serverPipelineFromAnnotations.
- Removed deprecated Response.header method (use headerAdd, headerAddDate).
- Removed deprecated Response.headers (use headerExists, headerNames, etc).
- Removed deprecated RequestFactory (use RequestCreator).
- Removed deprecated Server.requestFactory (use Server.requestCreator).
- Removed deprecated Handles.Handles (use Handles.request).
- Removed deprecated Request.hasSession (use session != null).
- Added the use of annotations to create exception handlers.
- Added the use of annotations to create rules on pipelines.
- Code clean up to satisfy pana 0.13.2 health checks.
- Include query parameters in URL of proxy requests.
- Added support for a low-level exception handler.
- Added headerAddDate method for adding headers with dates.
- Automatically add Content-Length header when using ResponseBuffered.
- Made settings headers in the Response case-independent.
- Removed warning when redirecting to an absolute path/URL.
- Updated dependencies to allow uuid v2.0.1 and test v1.6.3 to be used.
- Support for using static file handler with reverse proxies on non-standard ports.
- Fixed content-type for redirections.
- Fixed bug with redirection URL for directories with static files.
- Workaround for bug in Dart 2.1.x which prevents cookies from being deleted.
- Merged in changes from v2.2.2.
- Added proxy handler.
- Simulation mechanism for testing servers.
- Added external path to internal path conversion method.
- Fixed problem with publishing documentation on pub.dartlang.org.
- Updated the upper bound of the SDK constraint to <3.0.0.
- Changed names to use new Dart 2 names.
- Responds with HTTP 400 Bad Request if URL has malformed percent encodings.
- Change logging level for FormatExceptions when parsing query/POST params.
- This version runs under Dart 1.
- Updated dependencies to allow for Dart 2 compatible versions to be used.
- Changed RequestFactory to return FutureOr instead of Request.
- Added release method on Request class to perform cleanup operations.
- Deprecated requestFactory: renamed to requestCreator.
- Included Length, Last-Modified, and Date HTTP headers for StaticFiles.
- Added ability to retrieve the number of active sessions.
- Added access to creation time for sessions.
- Added expiry time for sessions.
- Stopping a server also terminates any sessions.
- Code made sound to support Dart strong mode.
- Removed arbitrary properties from Request and Session: use subtypes instead.
- Changed default bindAddress from LOOPBACK_IP_V6 to LOOPBACK_IP_V4.
- Added convenience methods for registering PUT, PATCH, DELETE and HEAD handlers.
- Added coverage tests.
- Upgraded version dependency on uuid package.
2016-09-29
- Fixed bug with parallel processing of HTTP requests.
2016-05-11
- Fixed potential issue with URL rewriting in Chrome with GET forms.
2016-05-06
- Improved exception catching in request processing loop.
2016-04-28
- Fixed homepage URL.
2016-04-23
- Initial release.