public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(stream => { using (var writer = new BlittableJsonTextWriter(ctx, stream)) { writer.WriteStartObject(); writer.WriteArray("Commands", _commands); if (_mode == TransactionMode.ClusterWide) { writer.WriteComma(); writer.WritePropertyName(nameof(TransactionMode)); writer.WriteString(nameof(TransactionMode.ClusterWide)); } writer.WriteEndObject(); } }) }; if (_attachmentStreams != null && _attachmentStreams.Count > 0) { var multipartContent = new MultipartContent { request.Content }; foreach (var stream in _attachmentStreams) { PutAttachmentCommandHelper.PrepareStream(stream); var streamContent = new AttachmentStreamContent(stream, CancellationToken); streamContent.Headers.TryAddWithoutValidation("Command-Type", "AttachmentStream"); multipartContent.Add(streamContent); } request.Content = multipartContent; } var sb = new StringBuilder($"{node.Url}/databases/{node.Database}/bulk_docs"); AppendOptions(sb); url = sb.ToString(); return(request); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { if (_supportsAtomicWrites == null || node.SupportsAtomicClusterWrites != _supportsAtomicWrites) { _supportsAtomicWrites = node.SupportsAtomicClusterWrites; for (var i = 0; i < _commands.Count; i++) { var command = _commands[i]; var json = command.ToJson(_conventions, ctx); if (node.SupportsAtomicClusterWrites == false) { // support older clients json.RemoveInMemoryPropertyByName(nameof(PutCommandData.OriginalChangeVector)); } _commandsAsJson[i] = ctx.ReadObject(json, "command"); } } var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(async stream => { await using (var writer = new AsyncBlittableJsonTextWriter(ctx, stream)) { writer.WriteStartObject(); writer.WriteArray("Commands", _commandsAsJson); if (_mode == TransactionMode.ClusterWide) { writer.WriteComma(); writer.WritePropertyName(nameof(TransactionMode)); writer.WriteString(nameof(TransactionMode.ClusterWide)); } writer.WriteEndObject(); } }) }; if (_attachmentStreams != null && _attachmentStreams.Count > 0) { var multipartContent = new MultipartContent { request.Content }; foreach (var stream in _attachmentStreams) { PutAttachmentCommandHelper.PrepareStream(stream); var streamContent = new AttachmentStreamContent(stream, CancellationToken); streamContent.Headers.TryAddWithoutValidation("Command-Type", "AttachmentStream"); multipartContent.Add(streamContent); } request.Content = multipartContent; } var sb = new StringBuilder($"{node.Url}/databases/{node.Database}/bulk_docs?"); AppendOptions(sb); url = sb.ToString(); return(request); }