From d615281d93f4e03962dbadf9ee6a12287ff724b3 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 6 May 2015 16:08:08 +0200 Subject: [PATCH] Added UsePrettyRequests() and PrettyJson() to connectionsettings --- .../Configuration/ConnectionConfiguration.cs | 25 +++++++++++++++++++ .../IConnectionConfigurationValues.cs | 6 +++++ .../RequestHandlers/RequestHandlerBase.cs | 5 +++- .../ElasticsearchDefaultSerializer.cs | 1 + 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Elasticsearch.Net/Connection/Configuration/ConnectionConfiguration.cs b/src/Elasticsearch.Net/Connection/Configuration/ConnectionConfiguration.cs index caf4cc45daf..93402c64642 100644 --- a/src/Elasticsearch.Net/Connection/Configuration/ConnectionConfiguration.cs +++ b/src/Elasticsearch.Net/Connection/Configuration/ConnectionConfiguration.cs @@ -87,6 +87,10 @@ public class ConnectionConfiguration : IConnectionConfigurationValues, IHideO private bool _usePrettyResponses; bool IConnectionConfigurationValues.UsesPrettyResponses { get{ return _usePrettyResponses; } } + + private bool _usePrettyRequests; + bool IConnectionConfigurationValues.UsesPrettyRequests { get{ return _usePrettyRequests; } } + #if DEBUG private bool _keepRawResponse = true; #else @@ -153,6 +157,7 @@ public ConnectionConfiguration(IConnectionPool connectionPool) this._connectionStatusHandler = this.ConnectionStatusDefaultHandler; this._maximumAsyncConnections = 0; this._connectionPool = connectionPool; + this._usePrettyRequests = true; } public ConnectionConfiguration(Uri uri = null) @@ -357,6 +362,26 @@ public T SetProxy(Uri proxyAdress, string username, string password) return (T) this; } + /// + /// Sets and in one go. + /// Whether we want to send and recieve formatted json + /// + /// + /// + public T PrettyJson(bool b = true) + { + return this.UsePrettyRequests(b).UsePrettyResponses(b); + } + + /// + /// Defaults to true, wether to send formatted json to elasticsearch or not + /// + public T UsePrettyRequests(bool b = true) + { + this._usePrettyRequests = b; + return (T) this; + } + /// /// Append ?pretty=true to requests, this helps to debug send and received json. /// diff --git a/src/Elasticsearch.Net/Connection/Configuration/IConnectionConfigurationValues.cs b/src/Elasticsearch.Net/Connection/Configuration/IConnectionConfigurationValues.cs index 3de7bcebb29..c14530df9d6 100644 --- a/src/Elasticsearch.Net/Connection/Configuration/IConnectionConfigurationValues.cs +++ b/src/Elasticsearch.Net/Connection/Configuration/IConnectionConfigurationValues.cs @@ -96,6 +96,12 @@ public interface IConnectionConfigurationValues /// bool MetricsEnabled { get; } + /// + /// Forces the client to pretty format the requests send to elasticsearch + /// defaults to true; + /// + bool UsesPrettyRequests { get; } + /// /// Forces elasticsearch to send pretty json responses over the wire /// diff --git a/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs b/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs index 49f471c7360..8741cef3ffd 100644 --- a/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs +++ b/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs @@ -60,7 +60,10 @@ protected byte[] PostData(object data) if (ss != null) return (string.Join("\n", ss) + "\n").Utf8Bytes(); var so = data as IEnumerable; - if (so == null) return this._serializer.Serialize(data); + var indent = this._settings.UsesPrettyRequests + ? SerializationFormatting.Indented + : SerializationFormatting.None; + if (so == null) return this._serializer.Serialize(data, indent); var joined = string.Join("\n", so .Select(soo => this._serializer.Serialize(soo, SerializationFormatting.None).Utf8String())) + "\n"; return joined.Utf8Bytes(); diff --git a/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs b/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs index b3440099920..92428e3e53a 100644 --- a/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs +++ b/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs @@ -27,6 +27,7 @@ public T Deserialize(Stream stream) return SimpleJson.DeserializeObject(buffer.Utf8String()); } } + public Task DeserializeAsync(Stream stream) { var tcs = new TaskCompletionSource();