Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Improve XML docs. * [ADD][BRK] FileSystemProvider may be immutable or not. * Revert "[ADD][BRK] FileSystemProvider may be immutable or not." This reverts commit 88a7d51. The wrong file was committed. * [ADD][BRK] Method IFileProvider.Start. * [ADD][BRK] Support for mutable directories in FileSystemProvider. * [ADD] Property MimeTypes.Default. * [FIX] FileSystemProvider does not always return a MIME type for files. * [ADD] Class ResourceFileProvider, to replace the functionality of ResourceFilesModule. * [ADD] New ZipFileProvider * Remove unused parameter. * Minor adjustment to ZipFileProvider * Assorted minor fixes / cleanup. * [ADD] Class CompressionStream. * [ADD][BRK] Refactored file server. * Various fixes to FileModule. * [ADD] ZipFileProvider extension methods * Code Review and fix build issues with Unit test * Fix issue with ContentType in Files * [FIX] The default for FileModule.DirectoryListener should be null. * [FIX][ADD][BRK] Improve ZipFileProvider, as follows: * Give an option in the constructor to leave the underlying stream open. * Implement IDisposable correctly. * Improve XML docs. * [ADD] Proeprty IHttpResponse.SendChunked * [FIX][BRK][ENH] Improve FileModule performance. * Generate ETags from file date and length instead of using MD5. * Only one class for mapped resource information. * Handle conditional requests and partial requests in a more RFC-compliant way. * Change IMimeTypeProvider.TryGetMimeType to GetMimeType, returning null on not found. * Fix tests. * [ADD][BRK] Property IHttpContext.Age. * Improve logging of request processing. * Add necessary using blocks in sample program. * Add the possibility to not start the browser automatically in sample program. * Add logging of file cache purge. * Flush the response stream before closing a HTTP context. * Add the possibility of disabling file cache in sample program. * [BRK] Remove useless property IFileProvider.CanSeekFiles. * Use LINQ in MimeTypeProviderStack.GetMimeType. * [ADD] Move some functionality from FileModule.OnRequestAsync to extension methods. * [FIX] Correct file cache purge logging. * Improve code structure in FileModule. * [FIX] FileModule: client seems to hang for 15 seconds if response is being cached. Turns out it was sending out an incorrect Content-Length, thus the client was simply waiting for data that wasn't there. * Use chunked encoding in FileModule if not caching. * [FIX] FileModule: no default document applied if a URL path does not map to a directory. * [FIX] missing session data in unit test * Bump version * Update AppVeyor * Unit test ResourceFileProvider without a FileModule and a web server. * [FIX] Ambiguous call when creating a HttpRedirectException with default status code. * Improve coverage of ResourceFileProvider. * Add methods to get resources, and byte ranges in resources, as byte arrays. * Add class MockFileProvider to test FileModule without an actual file provider. * [BRK] Make DLL name consistent with project name and NuGet package. * [FIX] Context ID is always empty in Mono. * [BRK] Remove unused property IHttpRequest.RequestTraceIdentifier. Its only use was as a unique ID for a HTTP context. Except on Mono, where RequestTraceIdentifier is always Guid.Empty. * Make RouteVerbResolverCollection less log-noisy. * Improve logging of served requests, especially when Debug messages are disabled. * Include LICENSE file in package instead of relying on deprecated PackageLicenseUrl. * Update appveyor.yml * [FIX] Issue wit ubuntu test * [FIX] Issue wit ubuntu test * Add new assembly EmbedIO.Testing * Review * Improve some comments. * Update README.md * Rename class SystemHttpContext to TestHttpContext in Testing library. * [FIX] Wrong resource prefix in Resource class. * [BRK] Rename MimeTypes to MimeType; strip Type suffix from relevant propetty names. * Split MimeType.Association to its own source file. * Improve XML docs. * Add internal method to check a Rfc2616 token without throwing. * [ADD] Methods for validation of MIME types and media ranges. * [ADD] Support for compression preference by MIME type or media range. * Remove unused internal class FileCacheItemExtensions. * [ADD] Method FileModule.ClearCache. * [ADD] More standard request handlers. * Rename RegisterControllerInternal to RegisterControllerTypeCore. The new name is more consistent with the purpose of the method. * [FIX] Potential problem if a controller factory returns a derived type overriding Dispose. * Remove non-abstract constraint when using factory methods for Web API controllers. A factory method may instantiate a concrete subclass. * Rename TestFixture to EndToEndTestFixture. * [FIX] Resource class has incorrect manifest resource prefix. * Rename class Resource to StockResource, more suitable now that it is public. * [FIX] ResourceFileProviderTest still references resources in EmbedIO.Tests assembly. * Add access modifier. * [ADD] Method MimeType.StripParameters to use before validating a MIME type. * [FIX] Error 500 if response content type has parameters, e.g. "text/html; encoding=UTF-8". * [FIX] MimeType.StripParameters does not strip optional white space. * Preview2 * Add Xmldoc to Testing * [FIX] ObjectDisposedException when cancelling a web server under Mono. * [FIX] Improper handling of locks in WebSocketModule. * Use a ConcurrentDictionary to manage contexts in WebSocketModule. * [ADD] Content encoding negotiation as extension method on QValueList. * Add unit tests for content encoding negotiation. * [FIX] Incorrect content encoding resulting from negotiation (issue #310) * Add Slack badge in README. * Code Style * Add "parameterless" and "dereferenced" to ReSpeller's dictionary. * [BRK] Web API controllers do not need constructor parameters any longer. * [ADD] Request data attributes for Web API controllers. * Set ContentEncoding in extension methods that send strings as responses. * [BRK] HttpException.SendResponseAsync should take a CancellationToken. * [ADD][BRK] Most HTTP exceptions can have a plain-text message attached. * Rename source file of generic type. * Add missing XML documentation. * [ADD] Non-generic request data attributes for web API controllers. * [BRK] Make class FormDataAttribute sealed. * Add missing XML documentation. * [[FIX][BRK] Parsed form data should be a read-only dictionary. * Avoid annoying warning about Hungarian notation. * Make GetRequestFormDataAsync remember a previous result for the same context. * [BRK] Remove class RequestParser as it just duplicates functionality. * [FIX] Extension methods should throw NRE when @this is null. * [ADD] Method NameValueCollectionExtensions.ContainsKey. * [ADD] Class LockableNameValueCollection: a NVC that can be made read-only. * [ADD] Utility methods to convert NVCs to dictionaries. * [BRK] Form data is now a read-only NameValueCollection. * [ADD] FormFieldAttribute to receive form field values in Web API controllers. * Make all properties of WebApiController public, so they can be used by attributes. Request data attributes may benefit from access to Request, User, etc. Given the short lifetime and restricted context of controllers, plus the fact that the remaining protected properties were just shortcuts for properties of HttpContext, the advantages of exposing them far outweigh encapsulation concerns. * Remove superfluous using directive. * [ADD] Web API controller methods can also return void or Task. * Rename FormDataParser to UrlEncodedDataParser; make it parse URL queries too. * [FIX] A form field may have an empty name. * [ADD] Support for data extraction from URL queries, similarly to forms. * Add unit tests for QueryData and QueryField attributes. * Remove unused InternalsVisibleTo attribute. * Expose class CookieCollection, renamed to CookieList to avoid conflicts. * Make class PeriodicTask sealed. * Eliminate some annoying warnings. * [ADD] HttpDate class to parse and format dates and times according to RFCs. * [FIX] Incorrect DOW in Expires header. * Minor aesthetic change. * Improve UrlEncodedDataParser and expose it in Utilities. * [ADD][BRK] Support for HttpClient in TestWebServer. * [ADD][BRK] Improve TestWebServer and fix tests. * Remove unnecessary code regions. * [BRK] Make StockResource.Prefix private, as it does not need to be exposed. * [FIX] HTML5 does not need namespaces; even less if they are XHTML namespaces. * Improve XML docs for MimeType. * Add missing XML documentation in EmbedIO.Testing. * Start work on unit tests for Utilities classes. * Remove optional TestFixture attributes. * More unit tests for Utilities classes. * Fix ambiguous reference in XML documentation. * Fix erroneous statement in XML documentation. * [FIX] DataDictionary<,>.GetOrAdd should check for an existing value first. * [FIX] ConcurrentDataDictionary<,>.GetOrAdd should check for an existing value first. * [FIX] Non-null key is not always enforced in DataDictionary<,>. * [FIX] DataDictionary<,>.TryAdd adds null values to dictionary. * Fix wrong class name in XML documentation. * Add unit tests for DataDictionary<,>. * Minor typo * Remove Useless property' * Remove commented code for WebSocket Extensions' * Code Style' * Reorder using directives. * Fix XML documentation for UrlEncodedDataParser.Parse. * [BRK] Remove WebApiModuleBase.OnParameterConversionErrorAsync callback. It made sense when there was no HttpException. Now it just makes debugging harder. * Improve InvalidCastException messages when using non-generic data request attrbutes. * Add some contextual info to 400 Bad Request responses. * Initialize early and cache endpoints (tentative fix for #315). * Update SWAN and Unit test nugets * Update README.md * Update README.md WIP * [ADD][BRK] Improve exception handling in web servers, as follows: * [ADD] IHttpException interface for exceptions that generate their own HTTP status codes. * [ADD] HttpExceptionHandler delegate, to handle exceptions that implement IHttpException. * [ADD] HttpExceptionHandler static class with standard handlers for HTTP exceptions. * [ADD] IWebModule.OnHttpException and IWebServer.OnHttpException properties. * [FIX][BRK] HttpException should not handle response generation by itself; instead, HTTP exceptions should only act on response code and headers, leaving response content rendering to handler callbacks set at a server and/or module level (similarly to what happens with unhandled exceptions). * [FIX][BRK] Parameter path of ExceptionHandlerCallback delegate is redundant (always set to context.Request.Url.AbsolutePath). * [ADD] Fluent extension methods, on both Web modules and servers, to set handlers for HTTP exceptions and for unhandled (non-HTTP) exceptions. * [ADD] Public constants for the header names used by the ExceptionHandler.EmptyResponseWithHeaders method. * Add unit tests for HTTP exception handling. * Add unit tests for unhandled exception handling. * [ADD] FormDataAttribute and QueryDataAttribute can work on non-string parameters. * Remove redundant using directives. * [FIX] Synchronous test method declared async. * [FIX] Missing new keyword on overrides. * ReSharper-assisted code review. * [BRK] Remove redundant SyncRoot property in CookieList. Breaking change because of binary incompatibility. * [FIX][BRK] QValueList.FindPreferredIndex can take an IEnumerable<string>. * Update README.md * Update README.md * Update README.md * Use a HTTP exception for the ultimate "not found" response. * Update README.md * Update toc.yml * Apply better unit testing criteria. * [FIX] DataDictionary<,> behaves inconsistently when cast as ICollection<>. * Add unit tests for ConcurrentDataDictionary<,>. * [FIX] ConcurrentDataDictionary<,>.TryAdd should always simulate adding a null value. * This commit needs to be reviewed * [FIX] LocalSessionManager gets confused when using CookiePath. * [FIX] Minor compiler warning * [FIX] Resolves issue with encode string parameters * [FIX] The concept of "critical exception" is a little too broad. * [ADD][BRK] FromString static class to standardize conversions from string. * [ADD][BRK] Pass the parameter name to request data attributes. [QueryField] and [FormField] can be used without specifying a field name: the parameter name will be used as field name. * [DEL] TransformAsync extension method * [FIX] Typo in file name. * [BRK] Remove the need for request handlers to return a boolean. * Use new-style typed methods in TestController. * [FIX] WebServerBase<>.Start waits forever if Prepare throws. #318 * [FIX] FileModule.Dispose throws if Start has not been called. #319 * [ADD] Reflection extensions and web api clean up * [FIX] Minor issue CORS and warnings * [FIX] Minor warnings and remove useless API * Fix wrong tag in XML docs. * [ADD] Methods UrlPath.Split and UrlPath.UnsafeSplit to split URL paths into segments. * Partially revert "[ADD] Reflection extensions and web api clean up" This reverts commit 19c8388, except for the eklimination of unused method WebApiModuleBase.TaskToBoolTask. * [FIX] Synchronous controller methods don't work. * Add unit tests for UrlPath. * Dictionaries are unordered: unit tests should not expect them to be ordered. * [FIX] Verify CORS module * [FIX] Bad passthrought * Fix XML docs. * Move housekeeping from WebModuleCollection to WebModule; save a try block. * Improve XML docs. * [ADD][BRK] Implement changes to WebModuleBase and derived classes to address #321: * [BRK] Make WebModuleBase.IsFinalHandler abstract. * Change WebSocketModule.IsFinalHandler to true. * [ADD][BRK] Allow to set ModuleGroup.IsFinalHandler in constructor. * [BRK] Rename IHttpContext.Handled to read-only IsHandled; add method SetHandled. * Improve XML docs. * Update README.md * [ADD][BRK] Add CancellationToken and RequestedPath properties to IHttpContext. * [FIX] Request data attributes with both generic and non-generic interfaces fail. Non-generic data request interfaces aren't even probed if there is no suitable generic interface. This commit solves the problem by deferring throwing an InvalidOperationException until non-generic data request interfaces have been probed (and hopefully used.) * Update README.md * Avoid warning about order of class members. * [ADD] Method QValueList.TryGetWeight to get the weight of a candidate. * [FIX] PreferCompression = false not respected (GitHub issue #330) * [ADD] new SWAN preview 002 * Update SWAN 2 preview 3 * Update to SWAN preview 4 * Update to SWAN Lite Preview 005 * Update litelib * [ADD] DataObject property and HttpExceptionHandler.JsonDataResponse * [UPD] Swan and dependencies * [FIX] Client-sent cookies are erroneously checked for path and domain (#338) * Update SWAN to 2.0.0-rc002 * Don't use ExceptionMessage extension, it's gone. * [ADD][BRK] ISession should not derive from IDataDictionary<,> (#335) * [BRK] Reorder members and improve XML docs in IHttpException. * Clarify XML docs, stating that some HTTP exception handlers will ignore DataObject. * [BRK] Replace JsonDataResponse with a more general way to use response serializers for HTTP ecxeptions. * [UPD] SWAN 2 FINAL * [FIX] Null HTTP exception messages are replaced by the CLR at throw time. * [ADD][BRK] Make DataResponse only send DataObject; add FullDataResponse to also send the message. * [ADD][BRK] Introduce the concept of base route (route pattern ending in "/"). * Added name param to WithWebApi method * Added configure param to WithLocalSessionManager method * Use overloads * Added name param to WithRouting method * Use overload * Added name param to With* file methods * Use overloads * Added configure param to WithModule method * Use overloads * Optimize RouteMatcher.Match for parameterless routes. * Relax slash checking on routes; normalize later. * Optimize route splitting. * [ADD][BRK] (Re)introduce routing at module collection level. * Rename IWebModule.BaseUrlPath to BaseRoute * Add property IHttpContext.Route (a RouteMatch of the requested path against the module's BaseRoute); change IHttpContext.RequestedPath implementations to return Route.SubPath * Add method IWebModule.MatchUrlPath; matching is done by each module instead of having a base URL path on module collections * Remove base URL path from WebModuleCollection * [UPD] LiteLib library in Sample * Update appveyor.yml
- Loading branch information