- RavenDB-2340: First proposal for a high-level files API.
- Joint design with Oren.
* Get rid of the RemoteXXX in favor of the XXXHeader naming to avoid mixing the marker idea with the 'live' concepts found on COM and the like.
* Get rid of the FilesQuery for now. We will focus on the core API for now.
* Separated the unit-of-work style API from the eager API at the session level with the Register keyword.
[WIP] Implementation of the asyncServerClientBase
* RavenFileSystemClient using the AsyncServerClientBase
- All tests green.
- Separated ServerUrl from BaseUrl to avoid confusions.
- Moved: Notifications interfaces and implementation to the new namespace.
- Moved: Replication interfaces and implementation to the new namespace.
- Moved: Extensions to the new namespace.
- Moved: Some data elements that were mistakenly stored in the client namespaces.
- Moved: Sharding interfaces and implementation with the exception of the client.
- Replaced StringUtils.UrlEncode with Uri.EscapeDataString (as is it used in RavenDB).
- Renamed: FileInfo to FileHeader and unified them on the Abstractions assembly.
- Renamed: RavenFilesSystemClient to AsyncFilesServerClient
- Renamed: ShardedRavenFileSystemClient to AsyncShardedFilesServerClient
- Refactoring of the Exception extensions.
- Unified the naming of all internal entities stored to XXXInformation to avoid names clashes with public API names.
- Finished removing the Raven.Abstractions.RavenFS and Raven.Client.RavenFS
- AsyncServerClient and its children implement the IAsyncFilesCommand interfaces.
- All commands exposed by the AsyncFilesServerClient are not interfaces.
- Added IAsyncFilesCommandsImpl to handle the case of database server and very low level access.
- Changes all uses of the concrete AsyncFilesServerClient for IAsyncFilesCommands interface.
- Except the tests from notification which need the FilesStore, all tests are using the ISyncFilesCommands interface
* Also uses the IAsyncFilesCommandsImpl when appropriately.
- Refactoring of the IFilesCommands and IAsyncFilesCommand related interfaces.
- Cleanup of the AsyncFilesServerClient with better use of RavenJObject and RavenJArray deserialization extensions.
- Added: Extensions to deal with plain object serialization (WriteWithObjectAsync).
- Moved: ListenableStream and the AsyncExtensions to its proper namespace.
- Operations Headers are included in all requests.
- Removed intermediate variables in internal clients.
- Barebones implementation of the FilesStore.
* Implements basic initialization.
* Implements access to the Async Commands only.
- Updated tests to use the FilesStore instead of creating the AsyncFilesServerClient directly.
- AsyncServerClientBase handles the case where OperationHeaders are null.
- Added: Synchronous version of the EnsureFileSystemExists extension method.
- Added: ForFileSystem(xxx) method to the Async and Sync Commands interface.
- Added With(Credentials) method to the IAsyncFilesCommands.
- Fixed: LoadFiles with enumeration returning a single FileHeader.
- Removed: IFilesCommands after review.
- Moved Change() method from Command to FilesStore.